To find the position of the elements which are same in vector

2 views (last 30 days)
I have a vector like this: a = [ 2 3 4 2 5 4 3 3]; and I want to find all the index of the elements which has the same value. output like this: # 2, [1 4] # 3, [2 7 8] # 4, [3 6] # 5, [5]

Accepted Answer

Matt Fig
Matt Fig on 12 Sep 2012
  2 Comments
UTA
UTA on 12 Sep 2012
but I have to search for a(1) to a(end), and that has duplicate ,how to simply this?
Matt Fig
Matt Fig on 12 Sep 2012
Edited: Matt Fig on 12 Sep 2012
Oh, well that's another thing.
a = [ 2 3 4 2 5 4 3 3];
[J,J] = histc(a,unique(a));
T = accumarray(J.',(1:length(J)).',[], @(x) {x});
Now T has the indices you seek.

Sign in to comment.

More Answers (2)

per isakson
per isakson on 12 Sep 2012
Edited: per isakson on 12 Sep 2012
Try
num = [ 2 3 4 2 5 4 3 3 ];
unq = unique( num );
ii = arrayfun( @(x) find( num==x ), unq, 'uni', false ) ;
>> unq
unq =
2 3 4 5
>> ii{:}
ans =
1 4
ans =
2 7 8
ans =
3 6
ans =
5
or use a for-loop

Javier
Javier on 28 Aug 2013
Edited: Javier on 28 Aug 2013
ind=unique(a)
for i = 1 : length(ind);
[z] =find(a==ind(i))
limit(i,:)=[z(1) z(end)]
end
out = [ind limit]
regards

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!