删除数组中的重复项但首先出现

时间:2015-02-05 18:29:40

标签: matlab matrix duplicates

以下代码删除重复值

numarr = [1 2 2 3 3 3 4 4 4 4];
%// Filter doubled values
[n_, bin]       = histc(numarr, unique(numarr));
multiple_       = find(n_ > 1);
mult_indices_   = ismember(bin, multiple_);

numarr(mult_indices_) = [];

%// output     
numarr =  1

如何调整,第一次出现任何重复?

即。输出将是

numarr =

     1     2     3     4

1 个答案:

答案 0 :(得分:2)

unique'stable'属性一起使用:

a = [1 3 2 5 2 7 1 3 4 5 6 8 2];
output = unique(a,'stable')

会保留订单,因此可以根据需要保留每个值的

output =

     1     3     2     5     7     4     6     8

如果没有'stable',则输出会被排序。


关于您的评论:要获取已删除重复项的索引,您需要uniquesetdiff的第二个输出:

[output, kept_idx] = unique(a,'stable')
removed_idx = setdiff(1:numel(a),kept_idx)

removed_idx =

     5     7     8    10    13