How do I find the index of the 2 maximum values of a 1D array in MATLAB? Mine is an array with a list of different scores, and I want to print the 2 highest scores.
I'll go for an O(k*n)
solution, where k
is the number of maximum values you're looking for, rather than O(n log n)
:
x = [3 2 5 4 7 3 2 6 4];
y = x; %// make a copy of x because we're going to modify it
[~, m(1)] = max(y);
y(m(1)) = -Inf;
[~, m(2)] = max(y);
m =
5 8
This is only practical if k
is less than log n
. In fact, if k>=3
I would put it in a loops, which may offend the sensibilities of some. ;)