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

21 views (last 30 days)
Sameer on 23 May 2014
Edited: Cedric Wannaz on 23 May 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

Cedric Wannaz on 23 May 2014
Edited: Cedric Wannaz on 23 May 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) ;
Cedric Wannaz on 23 May 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)) )

George Papazafeiropoulos on 23 May 2014
Edited: George Papazafeiropoulos on 23 May 2014
A=[1 1 0 -1 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=A(c==1);
##### 2 CommentsShowHide 1 older comment
Cedric Wannaz on 23 May 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.

Mahdi on 23 May 2014
If you're looking specifically for the value of -1, you can use the following:
index1=find(A==-1)
Sameer on 23 May 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

George Papazafeiropoulos on 23 May 2014
Edited: George Papazafeiropoulos on 23 May 2014
A=[1 1 -1 0 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=find(c==1);
Sameer on 23 May 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