How to find index of first 3 maximum number in matrix

24 views (last 30 days)
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

Accepted Answer

Orion
Orion on 5 Nov 2014
Edited: Orion on 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 Comment
Amit Kumar
Amit Kumar on 21 Feb 2018
Edited: Amit Kumar on 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)

Sign in to comment.

More Answers (2)

Aida Arman
Aida Arman on 21 Nov 2018

MA
MA on 5 Nov 2014
Edited: MA on 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]

Categories

Find more on Shifting and Sorting Matrices 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!