# How to find the indices of element occuring once in a vector?

10 visualizaciones (últimos 30 días)
Sameer el 23 de Mayo de 2014
Editada: Cedric el 23 de Mayo de 2014
Hello all
I want to know...How can I get the indices of a value that is occuring only once in a vector...please guide.
Example: A=[1 1 0 -1 0 0 1 0 1 1]
Task: To identify the indices of -1 (as it is occuring only once) in A.
Regards
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Cedric el 23 de Mayo de 2014
Editada: Cedric el 23 de Mayo de 2014
There are ways to solve your problem based on HISTC or ACCUMARRAY. However, the simplest approach if you really have only two situations (unique 1 or unique -1) is probably the following:
if sum( A == 1 ) == 1
pos = find( A == 1 ) ;
else
pos = find( A == -1 ) ;
end
value = A(pos) ;
##### 4 comentariosMostrar 2 comentarios más antiguosOcultar 2 comentarios más antiguos
Mahdi el 23 de Mayo de 2014
Very nice Cedric! I didn't even think of doing that way!
Cedric el 23 de Mayo de 2014
Editada: Cedric el 23 de Mayo de 2014
Well, I would personally go for clarity .. otherwise there is even a one liner actually:
[~,pos,value] = find( A .* (A == -1 + 2*(sum(A==1)==1)) )

Iniciar sesión para comentar.

### Más respuestas (3)

George Papazafeiropoulos el 23 de Mayo de 2014
Editada: George Papazafeiropoulos el 23 de Mayo de 2014
A=[1 1 0 -1 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=A(c==1);
##### 2 comentariosMostrar NingunoOcultar Ninguno
Sameer el 23 de Mayo de 2014
I want to know the index of an entry which is unique to a particulat set of values. lets say
if A=[1 1 1 -1 0 0] then I want the indices of -1. if A=[-1 -1 -1 0 1 0] then I want the indices of 1.
I hope I made it clear what I am looking for.
Regards
Cedric el 23 de Mayo de 2014
Sagar, you should take the time to understand his example. In particular, see what c is, what c==1 is, etc. Maybe read about logical indexing, and if you cannot use the latter and really need the position of unique element(s), read about FIND.

Iniciar sesión para comentar.

Mahdi el 23 de Mayo de 2014
If you're looking specifically for the value of -1, you can use the following:
index1=find(A==-1)
##### 3 comentariosMostrar 1 comentario más antiguoOcultar 1 comentario más antiguo
Mahdi el 23 de Mayo de 2014
You can use the unique function.
[C, ia, ic]=unique(A)
Where the matrix C gives the unique value (1 or -1 in this case), and ia gives the indices where these are found.
Sameer el 23 de Mayo de 2014
Thank you....but unique command returns the values that are present in the vector so here it is -1 0 1. But I am looking for the single value that is either 1 or -1 and then the indices of that particular value.
Regards

Iniciar sesión para comentar.

George Papazafeiropoulos el 23 de Mayo de 2014
Editada: George Papazafeiropoulos el 23 de Mayo de 2014
A=[1 1 -1 0 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=find(c==1);
##### 3 comentariosMostrar 1 comentario más antiguoOcultar 1 comentario más antiguo
George Papazafeiropoulos el 23 de Mayo de 2014
Try the above code for different A. Define A as you want and then execute the two last lines of the code. I think it works...
Sameer el 23 de Mayo de 2014
Editada: Sameer el 23 de Mayo de 2014
Unfortunately its not working as in the attached image you can see that 1 is the unique and its index should be 7 but the code is showing for -1 instead that is 1 2 3. where A=[-1 -1 -1 0 0 0 1 0].
Regards

Iniciar sesión para comentar.

### Categorías

Más información sobre Creating and Concatenating 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!

Translated by