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

时间:2013-01-28 06:41:10

标签: matlab matrix

如何在没有循环的情况下找到数组中最大元素的索引?

例如,如果我有:

a = [1 2 999 3];

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

同样用于定义indexMin

3 个答案:

答案 0 :(得分:25)

当指定了两个输出参数时,内置max函数具有此功能:

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

the_max =

   999


index_of_max =

     3

同样适用于min

答案 1 :(得分:22)

正如Evgeni max所指出的,min可以将argmaxargmin作为第二个参数返回。
值得注意的是,您可以在特定维度中使用这些函数

 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是行/列索引。

答案 2 :(得分:7)

作为替代解决方案,您可以尝试这样做:

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

显然,同样的程序适用于max

我希望这会有所帮助。