command unique without sorting??
196 次查看(过去 30 天)
显示 更早的评论
i need to delete the double numbers in a vector and create a new vector without the doubles and maintaining the same order... i used unique but i dont know how to let them stay in the same order! for exemple for
v=[7 6 3 3 2 3 5 2 2 4 1 4]
it should be
v=[7 6 3 2 5 4 1]
0 个评论
回答(4 个)
Honglei Chen
2014-3-26
You changed your question from yesterday, please don't do so. As to your new question, my answer above already covered it.
unique(v,'stable')
0 个评论
Andrei Bobrov
2014-3-26
编辑:Andrei Bobrov
2014-3-26
for older releases of Matlab
[~,b] = unique(v,'first')
a_out = v(sort(b))
or
[a0,b0,c0] = unique(v,'first')
[~,ii] = sort(b)
[~,jj] = sort(ii);
a_out = a0(ii);
b_out = b0(ii);
c_out = jj(c);
0 个评论
Honglei Chen
2014-3-25
[vu,~,idx] = unique(v.','stable')
vs = accumarray(idx,ones(numel(v),1))
[vu vs]
0 个评论
Gabor
2021-5-1
编辑:Gabor
2021-5-1
In my opinion unique should be "stable" by default. If someone wants to sort, than there is sort commant that for. What does sorting by default in unique has to do with removing duplicate values? In same logic why doesnt sorting has default unique function built in? Or do I missing any point? For me it does not make any sense nor being logical.
1 个评论
Tom Toulouse
2021-5-26
It is because the 'stable' option did not exist on the first release of the unique function. Furthermore the simpliest way to get unique value is to sort the vector. So the stable option should be a little bit longer to execute.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!