如何找到方阵的绝对最大值索引?例如,考虑:
A =
1 -2 1
-3 2 -3
2 -5 5
MATLAB代码应返回:
row = 3
col = 2
注意:如果存在多个具有绝对最大值的元素,则代码应返回其中一个。
答案 0 :(得分:4)
在展平矩阵(即max
)上使用A(:)
的第二个输出,然后使用ind2sub
转换回下标索引。我建议您阅读线性索引,以正确理解其工作原理。
A = [1 -2 1
-3 2 -3
2 -5 5]
[~,l] = max(abs(A(:)));
[r,c] = ind2sub(size(A),l)
答案 1 :(得分:0)
您可以将矩阵转换为矢量,并从矢量中的位置确定矩阵内的位置:
B = reshape(A,1,size(A,1)*size(A,2))
[~,I] = max(B)
row = mod(I, size(A,1)
col = floor(I / size(A,2))
答案 2 :(得分:0)
这更容易阅读和理解,但速度会慢一倍:
[row,col]=find(abs(A)==max(abs(A(:))))