我有一个像A一样的矩阵,虽然实际上要大得多:
A = 2 100 250
1 50 25
0 600 700
5 20 30
我想根据第一个列中的最大值找到行值。在上面的示例中,我想基于列值“5”找到第四行,并且还获得其他两个行值,20 30。
答案 0 :(得分:2)
您可以找到矩阵A每列最大值的行索引,如下所示:
[~, maxRowIndicesByColumn] = max(A,[],1);
然后获取第一列中具有最大值的行
A(maxRowIndicesByColumn(1),:)
ans =
5 20 30
答案 1 :(得分:2)
使用logical indexing,您可以紧凑而快速地执行此操作:
toList
内部result = A(A(:,1)==max(A(:,1)),:)
,得到逻辑(0或1)的向量,每个元素对应A(:,1)==max(A(:,1))
的第一列中的元素,如果是,则等于A
element是1
第一列中最大的(即它是A
)。在您的示例中,它将是max(A(:,1))
。
然后,我们从[0;0;0;1]
中提取逻辑向量中A
的每一行。请注意,如果有多个值都等于1
,那么您将获得所有相应的行。