How to find second largest value and its index in an array?

조회 수: 144 (최근 30일)
charu shree
charu shree 2021년 10월 7일
편집: Matt J 2021년 10월 7일
Hello everyone, I am trying to find the second largest value and its index in an array given by
A = [11,15,16,99,87]
Any help in this regard will be highly appreciated.

답변 (2개)

Matt J
Matt J 2021년 10월 7일
편집: Matt J 2021년 10월 7일
A = [11,15,16,99,87];
[mx,ind]=maxk(A,2)
mx = 1×2
99 87
ind = 1×2
4 5
secondMax=mx(2)
secondMax = 87
index=ind(2)
index = 5
  댓글 수: 1
Matt J
Matt J 2021년 10월 7일
Or, if ties are not allowed
A = [11,15,16,99,99];
[u,i]=unique(A);
secondMax=u(end-1)
secondMax = 16
index=i(end-1)
index = 3

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


Image Analyst
Image Analyst 2021년 10월 7일
charu, did you try sorting and using find()? We also need to know your definition of "second largest".
% What is the second largest in this vector: 99 or 87?
A = [11,15,16,99,87, 99, 87]
% Assume it's 87, then to find all locations where 87 occurs:
sortedA = sort(unique(A), 'descend')
indexes = find(A == sortedA(2))
You get
A =
11 15 16 99 87 99 87
sortedA =
99 87 16 15 11
indexes =
5 7

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by