以下代码删除重复值
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
答案 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'
,则输出会被排序。
关于您的评论:要获取已删除重复项的索引,您需要unique
和setdiff
的第二个输出:
[output, kept_idx] = unique(a,'stable')
removed_idx = setdiff(1:numel(a),kept_idx)
removed_idx =
5 7 8 10 13