如何在不循环的情况下找到数组中最大元素的索引?
例如,如果我有:
a = [1 2 999 3];
我想定义一个函数indexMax
,以便indexMax(a)
返回3
.
同样用于定义indexMin
.
max
当指定两个输出参数时,内置函数具有此功能:
a = [1 2 999 3];
[the_max, index_of_max] = max(a)
the_max =
999
index_of_max =
3
同样对于min
.
正如Evgeni max
所指出的,min
可以返回argmax
andargmin
作为第二个参数。
值得注意的是,您可以在特定维度上使用这些函数:
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 是行/列索引。
作为替代解决方案,您可以尝试以下方法:
a = rand(1,1000);
min_idx = find(a == min(a));
显然,相同的程序适用于 的情况max
。
我希望这有帮助。