数组中最大值和最小值的索引

我怎样才能find没有循环数组中的最大元素的索引?

例如,如果我有:

a = [1 2 999 3]; 

我想定义一个函数indexMax以便indexMax(a)将返回3

同样用于定义indexMin

正如Evgeni指出的, maxmin可以返回argmaxargmax作为第二个参数。
值得注意的是,您可以沿着特定的维度使用这些function:

  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 

注意空的[]第二个参数 – 这是至关重要的max( A, [], 2 )完全等于max( A, 2 ) (我会留给你作为一个小练习,看什么max( A, 2 )做)。

从这些“沿维度”调用返回的argmax / argmin是行/列索引。

当指定了两个输出参数时,内置的max函数具有这个function:

 a = [1 2 999 3]; [the_max, index_of_max] = max(a) the_max = 999 index_of_max = 3 

同样的min

作为一种替代解决scheme,你可以试试这个:

 a = rand(1,1000); min_idx = find(a == min(a)); 

显然,在max的情况下,同样的程序是适用的。

我希望这有帮助。