【发布时间】:2010-03-24 17:37:29
【问题描述】:
我有一个 n×m 矩形矩阵 (n != m)。在 MATLAB 中找出是否有任何重复行的最佳方法是什么?查找重复项索引的最佳方法是什么?
【问题讨论】:
标签: matlab matrix duplicates
我有一个 n×m 矩形矩阵 (n != m)。在 MATLAB 中找出是否有任何重复行的最佳方法是什么?查找重复项索引的最佳方法是什么?
【问题讨论】:
标签: matlab matrix duplicates
使用 unique() 查找不同的行值。如果最终行数减少,则存在重复项。它还将为您提供每个不同值的一个位置的索引。所有其他行索引都是您的重复项。
x = [
1 1
2 2
3 3
4 4
2 2
3 3
3 3
];
[u,I,J] = unique(x, 'rows', 'first')
hasDuplicates = size(u,1) < size(x,1)
ixDupRows = setdiff(1:size(x,1), I)
dupRowValues = x(ixDupRows,:)
【讨论】:
【讨论】:
repeatedIndex 是[3,4]?
mat 的第四行和第五行是之前行的重复。
遍历矩阵的行,并为每一对测试是否
row1 == row2
【讨论】:
假设你的矩阵是 M:
[S,idx1] = sortrows(M);
idx2 = find(all(diff(S,1) == 0,2));
out = unique(idx1([idx2;idx2+1]));
out 将包含重复的行索引(如果有)。
【讨论】: