从数组中删除非唯一行

时间:2018-02-06 14:44:44

标签: matlab matrix duplicates unique rows

我有一个数组a,如下所示:

a = [ 1 2; 3 4; 1 2 ];

我想删除a中出现多次的所有行并获取c

c = [ 3 4 ];

请注意,这与保留唯一行的操作不同,因为我不希望出现具有重复项的行。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:9)

unique的第三个输出为您提供原始数组中唯一行的索引。您可以将其与accumarray一起使用来计算出现次数,这可用于选择仅出现一次的行。

例如:

A = [1 2; 3 4; 1 2];

[uniquerow, ~, rowidx] = unique(A, 'rows'); 
noccurrences = accumarray(rowidx, 1);

C = uniquerow(noccurrences==1, :);

返回:

>> C

C =

     3     4