How can I find the index of the maximum element in an array without looping?
For example, if I have:
a = [1 2 999 3];
I want to define a function indexMax so that indexMax(a) would return 3.
Likewise for defining indexMin.
How can I find the index of the maximum element in an array without looping?
For example, if I have:
a = [1 2 999 3];
I want to define a function indexMax so that indexMax(a) would return 3.
Likewise for defining indexMin.
As pointed by Evgeni max and min can return the argmax and argmin as second arguments.
It is worth while noting that you can use these functions along specific dimensions:
A = rand(4); % 4x4 matrix
[ row_max row_argmax ] = max( A, [], 2 ); % max for each row - 2nd dimension
[ col_min col_argmin ] = min( A, [], 1 ); % min for each column - 1st dimension
Note the empty [] second argument - it is crucial max( A, [], 2 ) is not at all equivalent to max( A, 2 ) (I'll leave it to you as a small exercise to see what max( A, 2 ) does).
The argmax/argmin returned from these "along dimension" calls are row/col indices.
max(X, Y) is an element-wise max (just like .* is an element-wise multiply) ... with the usual scalar behaviour, viz. sizes of X and Y must be the same or one of them can be a scalar.Just as an alternative solution, you might try this:
a = rand(1,1000);
min_idx = find(a == min(a));
Obviously, the same procedure is applicable in the case of max.
I hope this helps.