如何通过行与指定条件比较矩阵



我有一个类似的数据矩阵:

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')

相关内容

  • 没有找到相关文章

最新更新