MATLAB中方阵的绝对最大值索引

时间:2013-11-29 10:58:25

标签: matlab

如何找到方阵的绝对最大值索引?例如,考虑:

A = 
    1     -2     1
   -3      2    -3
    2     -5     5

MATLAB代码应返回:

row = 3
col = 2

注意:如果存在多个具有绝对最大值的元素,则代码应返回其中一个。

3 个答案:

答案 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(:))))