Filter löschen
Filter löschen

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

72 Ansichten (letzte 30 Tage)
charu shree
charu shree am 7 Okt. 2021
Bearbeitet: Matt J am 7 Okt. 2021
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.

Antworten (2)

Matt J
Matt J am 7 Okt. 2021
Bearbeitet: Matt J am 7 Okt. 2021
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 Kommentar
Matt J
Matt J am 7 Okt. 2021
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

Melden Sie sich an, um zu kommentieren.


Image Analyst
Image Analyst am 7 Okt. 2021
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

Kategorien

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