我正在使用Matlab R2014a,我想知道数组中的数字是否彼此不同.当然,我可以在一个循环中做到这一点,但我认为有更好的方法(也就是Matlab函数)来做到这一点.
例:
如果
A=[4 6 8 3] => msgbox ('Elements are different')
Run Code Online (Sandbox Code Playgroud)
而如果
A=[4 4 8 3] => msgbox ('Elements are not different').
Run Code Online (Sandbox Code Playgroud)
有什么功能可以做到这一点,或者我需要通过暴力来做到这一点?
以下是一些替代方案unique.
以下任一项的结果true是所有元素A都是不同的,false否则.
排序元素并查看某些连续元素是否相等:
result = all(diff(sort(A(:)))~=0);
Run Code Online (Sandbox Code Playgroud)计算除自身对之外的所有元素对的距离,并查看是否为零:
result = ~any(pdist(A(:))==0);
Run Code Online (Sandbox Code Playgroud)比较每对元素,包括自我对,并查看巧合的数量是否只是自我对的数量:
result = nnz(bsxfun(@eq, A(:), A(:).'))==numel(A);
Run Code Online (Sandbox Code Playgroud)使用ismember(第二个输出)来确定其中的最低索引元素A等于A:
[~, jj] = ismember(A,A);
result = all(jj==(1:numel(A)));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |