【发布时间】:2018-07-16 16:04:35
【问题描述】:
我有一个数组a,如下:
a = [ 1 2; 3 4; 1 2 ];
我想删除在a 中多次出现的所有行并得到c:
c = [ 3 4 ];
请注意,这与保留唯一行的操作不同,因为我根本不希望出现重复的行。我怎样才能做到这一点?
【问题讨论】:
标签: matlab matrix duplicates unique rows
我有一个数组a,如下:
a = [ 1 2; 3 4; 1 2 ];
我想删除在a 中多次出现的所有行并得到c:
c = [ 3 4 ];
请注意,这与保留唯一行的操作不同,因为我根本不希望出现重复的行。我怎样才能做到这一点?
【问题讨论】:
标签: matlab matrix duplicates unique rows
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
【讨论】: