2014-06-06 138 views
0

我無法在任何地方找到答案,但是如何檢查任何數組(A,B,C,D,...)是否彼此相等。檢查是否有任何數組在MATLAB中是等價的

E.g.

A = [1,3,5]

B = [2,6,8]

C = [1,2,6]

d = [2,6, 8]

我想創建一個腳本,告訴我是否有任何數組是等價的。這應該返回1(例如),因爲B和D是等價的。

不幸的是,isequal測試是否所有的數組都是相等的(所以這將返回0爲我的假設數據集)。到目前爲止,我唯一能想到的就是做isequal(A,B)| isequal(A,C)| isequal(A,D)| ... | isequal(C,D),但我希望能用100多個數組來做到這一點。

謝謝!

+0

是否所有的數組大小相同?你如何定義這些數組?使用單獨的變量不是一個好主意。你應該使用一個矩陣(即'[A; B; C; D]')或者一個單元陣列 –

回答

4

如果你只是想要一個0/1結果:

首先定義一個矩陣與所有的向量(假設所有相同的長度,如在你的例子):

M = [A;B;C;D]; 

然後用

result = size(unique(M,'rows'),1)<size(M,1); 

result = any(all(~diff(sortrows(M)).')); 

result = nnz(all(bsxfun(@eq, M.', permute(M.', [1 3 2]))))>size(M,1); 

result = any(pdist(M,'hamming')==0); 

或... :-)

+0

感謝您的建議,而且這是完美的! – user3716705

相關問題