在MATLAB中,如何找到矩阵列中最大值的索引?

13

我想在一个矩阵中找到某一列的最大值,并且要找到这个最大值所在行的索引。请问如何实现?

2个回答

15

max 命令可以找到最大值及其下标。
以下是一个示例:

>> A = randn(10,3)
A = 
       0.8884     -0.10224     -0.86365
      -1.1471     -0.24145     0.077359
      -1.0689      0.31921      -1.2141
      -0.8095      0.31286      -1.1135
      -2.9443     -0.86488   -0.0068493
       1.4384    -0.030051       1.5326
      0.32519     -0.16488     -0.76967
     -0.75493      0.62771      0.37138
       1.3703       1.0933     -0.22558
      -1.7115       1.1093       1.1174

>> [maxVal maxInd] = max(A)
maxVal =
       1.4384       1.1093       1.5326
maxInd =
     6    10     6

1
请注意,如果一列中有多个最大值,则maxInd仅包含第一个出现的最大值。 - yuk
我尝试了,但一直出现以下错误:“索引无法产生多个结果。” - Jonathan
你需要这个:[Y,I] = MAX(X,[],DIM)。如果第三个参数是2,你将会得到每一行的最大值。 - yuk
当你遇到错误时,请编辑你的问题,展示你的数据样本和使用的代码。 - yuk
5
似乎您的Matlab工作空间中有一个名为“max”的变量与“max”函数重名了,它们在相同的命名空间内。输入“which max”确认一下,如果是这种情况,请使用“clear”清除您的工作空间以解决该问题。将您的代码组织成函数可以帮助避免此类问题。 - Andrew Janke
显示剩余2条评论

2
如果你想要获取某一列的最大值,只需将该列传递给 max 函数,或者从索引列表中选择该列。
%# create an array
A = magic(4)

A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

%# select the maximum of column 3
[maxValue, rowIdx] = max(A(:,3),[],1)

maxValue =
    15
rowIdx =
     4

如果您需要在另一个数组中查找相应的值,则可以使用otherArray(rowIdx,3)

。该值将返回第三列与行索引匹配的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接