我有一个类似的数据矩阵:
A=[ 5 0 10 15 0.021;
5 0 15 20 0.011;
10 15 5 0 0.022;
15 20 5 0 0.009]
我需要将每一行与其他所有行进行比较。标准是:如果该行的第一和第二列与第二行的第三列和第四列相同,并且该行的第三列和第四列与另一行的第一和第二列相同,我需要这两个行的索引。
例如:
A = [5 0 10 15 *;
* * * * *;
10 15 5 0 *;
* * * * *];
您可以看到:
- 第1行上的第一个和第二个元素等于第3行的第3和第四元素
- 第1行上的第3和第4个元素等于第3行的第1和第二个
我不想更改矩阵的顺序。
ismember可以做到这一点:
[~,b]=ismember(A(:,1:4),A(:,[3 4 1 2]),'rows');
ind = find(b);
ind(:,2) = b(ind(:,1));
ind
将包含冗余条目(例如[1 2]
和[2 1]
),因为您的标准是对称的,因此您可以使用:
ind = unique(sort(ind,2),'rows')