Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 删除数组中的重复项,但保留第一个匹配项_Matlab_Matrix_Duplicates - Fatal编程技术网

Matlab 删除数组中的重复项,但保留第一个匹配项

Matlab 删除数组中的重复项,但保留第一个匹配项,matlab,matrix,duplicates,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

下面的代码删除重复的值

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
如何调整它,使任何重复的第一次出现保持不变?

i、 e.输出将是

numarr =

     1     2     3     4
'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

如果没有
“稳定”
,输出将被排序


关于您的评论:要获取已删除副本的索引,您需要第二次输出
unique
setdiff

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

removed_idx =

     5     7     8    10    13

试试matlab的
unique
函数。很好..我忘了提到的是…有没有可能检索到被删除的重复项的索引(即,它们在被删除之前的位置的索引)?这是我没有想到的myself@embert这就是我们在这里的目的;)