How to find index of first 3 maximum number in matrix

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

 채택된 답변

Orion
Orion 2014년 11월 5일
편집: Orion 2014년 11월 5일
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

Amit Kumar
Amit Kumar 2018년 2월 21일
편집: Amit Kumar 2018년 2월 21일
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)

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

MA
MA 2014년 11월 5일
편집: MA 2014년 11월 5일
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]

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

질문:

Moe
2014년 11월 5일

답변:

2018년 11월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by