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

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.
Please Help!!!
Regards

 Réponse acceptée

Cedric
Cedric le 23 Mai 2014
Modifié(e) : Cedric le 23 Mai 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 commentaires

Hi...Thanks a lot for replying....its able to find the correct value. And to solve my purpose I just have to add a line which was suggested by mahdi. Thanks a lot...:)
Regards
Note that you can contract this into a 2 liners
pos = find( A == (-1 + 2 * (sum(A==1) == 1)) ) ;
value = A(pos) ;
but you lose in clarity.
Very nice Cedric! I didn't even think of doing that way!
Cedric
Cedric le 23 Mai 2014
Modifié(e) : Cedric le 23 Mai 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)) )

Connectez-vous pour commenter.

Plus de réponses (3)

A=[1 1 0 -1 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=A(c==1);

2 commentaires

Hi...Thanks for replying.
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.
Awaiting your Reply.
Regards
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.

Connectez-vous pour commenter.

If you're looking specifically for the value of -1, you can use the following:
index1=find(A==-1)

3 commentaires

Hi...Thanks for replying.
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.
Awaiting your Reply.
Regards
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.
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

Connectez-vous pour commenter.

A=[1 1 -1 0 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=find(c==1);

3 commentaires

Thank you...I appreciate your help. But the above solution is confined to a particular A(i guess) and its returing the indicies of only -1 if the elements of A changes.
Actually I have large number of different vectors and in each either 1 or -1 is unique (either only 1 or -1 in a vector like A=[1,1,1,-1,0,0] (-1 is occuring once),B=[-1,-1,-1,1,0,0](1 is occuring once)) so for A i should have the indices of -1 for B indices of 1. so I am looking for a code which will determine the unique number in a vector and return its corresponding indices and only of that particular number...not like unique function.
Awaiting your reply.
Regards
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
Sameer le 23 Mai 2014
Modifié(e) : Sameer le 23 Mai 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].
Awaiting your response.
Regards

Connectez-vous pour commenter.

Catégories

En savoir plus sur 2-D and 3-D Plots dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by