How to find index of first 3 maximum number in matrix

12 Ansichten (letzte 30 Tage)
Moe
Moe am 5 Nov. 2014
Beantwortet: Aida Arman am 21 Nov. 2018
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

Akzeptierte Antwort

Orion
Orion am 5 Nov. 2014
Bearbeitet: Orion am 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 Kommentar
Amit Kumar
Amit Kumar am 21 Feb. 2018
Bearbeitet: Amit Kumar am 21 Feb. 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)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Aida Arman
Aida Arman am 21 Nov. 2018

MA
MA am 5 Nov. 2014
Bearbeitet: MA am 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]

Kategorien

Mehr zu Shifting and Sorting Matrices 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