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

2 vues (au cours des 30 derniers jours)
UTA
UTA le 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]

Réponse acceptée

Matt Fig
Matt Fig le 12 Sep 2012
  2 commentaires
UTA
UTA le 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 le 12 Sep 2012
Modifié(e) : Matt Fig le 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.

Connectez-vous pour commenter.

Plus de réponses (2)

per isakson
per isakson le 12 Sep 2012
Modifié(e) : per isakson le 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 le 28 Août 2013
Modifié(e) : Javier le 28 Août 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

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by