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

4 次查看(过去 30 天)
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

采纳的回答

Cedric
Cedric 2014-5-23
编辑:Cedric 2014-5-23
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 个评论
Cedric
Cedric 2014-5-23
编辑:Cedric 2014-5-23
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)) )

请先登录,再进行评论。

更多回答(3 个)

George Papazafeiropoulos
编辑:George Papazafeiropoulos 2014-5-23
A=[1 1 0 -1 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=A(c==1);
  2 个评论
Sameer
Sameer 2014-5-23
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
Cedric
Cedric 2014-5-23
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
Mahdi 2014-5-23
If you're looking specifically for the value of -1, you can use the following:
index1=find(A==-1)
  3 个评论
Mahdi
Mahdi 2014-5-23
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
Sameer 2014-5-23
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
编辑:George Papazafeiropoulos 2014-5-23
A=[1 1 -1 0 0 0 1 0 1 1];
[~,c]=histc(A,unique(A));
out=find(c==1);
  3 个评论
George Papazafeiropoulos
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 2014-5-23
编辑:Sameer 2014-5-23
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by