找到列

时间:2017-08-05 20:51:29

标签: matlab

我有一个像A一样的矩阵,虽然实际上要大得多:

A =  2  100  250
     1  50   25
     0  600  700
     5  20   30

我想根据第一个列中的最大值找到行值。在上面的示例中,我想基于列值“5”找到第四行,并且还获得其他两个行值,20 30。

2 个答案:

答案 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,那么您将获得所有相应的行。