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.

Answers


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.


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.


Need Your Help

How to add database script in DNN custom module development package?

c# sql-server package dotnetnuke-module

i have made a custom module on DNN ,created its package and integrated with another DNN application.It works fine.But after uploading the module in another DNN application i am creating module data...