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

2 Ansichten (letzte 30 Tage)
UTA
UTA am 12 Sep. 2012
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]

Akzeptierte Antwort

Matt Fig
Matt Fig am 12 Sep. 2012
find(a==2)
  2 Kommentare
UTA
UTA am 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 am 12 Sep. 2012
Bearbeitet: Matt Fig am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

per isakson
per isakson am 12 Sep. 2012
Bearbeitet: per isakson am 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 am 28 Aug. 2013
Bearbeitet: Javier am 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

Kategorien

Mehr zu Data Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by