finding only unique values

Suppose you have a column vector, the values are integers(in order) but some of them are repeated, e.g. it could be [1,1,1,1,2,3,3,4,5,5,5,5,5] I want to find the indices of unique values e.g. the index of 2 and 4 in the aforementioned example. the unique function in matlab returns on top of truly unique the first value of any nonunique value, so it would return the index of the first 1, the first 3 and first 5 but I don't want those

 Respuesta aceptada

the cyclist
the cyclist el 22 de Ag. de 2013
Editada: the cyclist el 22 de Ag. de 2013

0 votos

Maybe call these the "singleton" values. Here's one way:
x = [1,1,1,1,2,3,3,4,5,5,5,5,5];
unique_x = unique(x);
count_x = hist(x,unique_x);
singleton_x = unique_x(count_x==1)

Más respuestas (2)

David Sanchez
David Sanchez el 22 de Ag. de 2013

0 votos

a=[1,1,1,1,2,3,3,4,5,5,5,5,5];
x = unique(a)
y = histc(a,x)==1;
lonely_values = find ( y == 1 )
or:
lonely_values = find ( (histc(a,unique(a))==1) == 1 )
lonely_values =
2 4
Azzi Abdelmalek
Azzi Abdelmalek el 22 de Ag. de 2013

0 votos

[ii,jj]=sort(x);
out=sort(jj(strfind(logical([1 diff(ii) 1]),[true,true])))

Categorías

Etiquetas

Preguntada:

el 22 de Ag. de 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by