检查MATLAB中是否有任何数组是等效的

时间:2014-06-06 22:59:50

标签: arrays matlab

我无法在任何地方找到答案,但我如何检查是否有任何数组(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多个阵列做到这一点。

谢谢!

1 个答案:

答案 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);

或......: - )