Index of max and min value in an array
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.
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.
The built-in max function has this functionality when two output arguments are specified:
a = [1 2 999 3]; [the_max, index_of_max] = max(a) the_max = 999 index_of_max = 3
Likewise for min.
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.