如何在没有循环的情况下找到数组中最大元素的索引?
例如,如果我有:
a = [1 2 999 3];
我想定义一个函数indexMax
,以便indexMax(a)
返回3
。
同样用于定义indexMin
。
答案 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
可以将argmax
和argmin
作为第二个参数返回。
值得注意的是,您可以在特定维度中使用这些函数:
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
。
我希望这会有所帮助。