How to find index of first 3 maximum number in matrix

12 vues (au cours des 30 derniers jours)
Moe
Moe le 5 Nov 2014
I have the following function that n is the first 3 maximum value of matrix m:
m = [7;1;4;4;12;2;6;10;2];
temp = sort( m, 'descend' );
n = temp(1:3)
I need to know the index of matrix n, like:
p = [5;8;1]; % first max value in matrix m is 12 that it located in the fifth row

Réponse acceptée

Orion
Orion le 5 Nov 2014
Modifié(e) : Orion le 5 Nov 2014
use the second output argument of sort
m = [7;1;4;4;12;2;6;10;2];
[temp,originalpos] = sort( m, 'descend' );
n = temp(1:3)
p=originalpos(1:3)
  1 commentaire
Amit Kumar
Amit Kumar le 21 Fév 2018
Modifié(e) : Amit Kumar le 21 Fév 2018
Great.. I just want to add a comment that if you have NaN in your matrix replace beforehand as m(isnan(m))=0 and then use, as:
m = [7;1;4;4;NaN;2;6;10;2];
m(isnan(m))=0
[temp,originalpos] = sort( m, 'descend' );
n = temp(1:3)
p=originalpos(1:3)

Connectez-vous pour commenter.

Plus de réponses (2)

Aida Arman
Aida Arman le 21 Nov 2018

MA
MA le 5 Nov 2014
Modifié(e) : MA le 5 Nov 2014
m = [7;1;4;4;12;2;6;10;2];
temp = sort( m, 'descend' );
n = temp(1:3);
for i=1:9
if n(1)==m(i)
p1=i;
elseif n(2)==m(i)
p2=i;
elseif n(3)==m(i)
p3=i;
end
end
p=[p1 p2 p3]

Catégories

En savoir plus sur Shifting and Sorting Matrices 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