command unique without sorting??
202 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (4)
Honglei Chen
el 26 de Mzo. de 2014
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 comentarios
Andrei Bobrov
el 26 de Mzo. de 2014
Editada: Andrei Bobrov
el 26 de Mzo. de 2014
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 comentarios
Honglei Chen
el 25 de Mzo. de 2014
[vu,~,idx] = unique(v.','stable')
vs = accumarray(idx,ones(numel(v),1))
[vu vs]
0 comentarios
Gabor
el 1 de Mayo de 2021
Editada: Gabor
el 1 de Mayo de 2021
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 comentario
Tom Toulouse
el 26 de Mayo de 2021
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.
Ver también
Categorías
Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!