我有一个这样的数据矩阵:
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 行的第 1 个和第 2 个元素等于第 3 行的第 3 个和第 4 个元素
- 第 1 行的第 3 个和第 4 个元素等于第 3 行的第 1 个和第 2 个元素
我不想改变矩阵的顺序。
最佳答案
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')
关于matlab - 如何逐行比较矩阵与指定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145515/