我无法在任何地方找到答案,但我如何检查是否有任何数组(A,B,C,D,......)彼此相等。
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 :(得分: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);
或......: - )