【问题标题】:Find the largest value in a column查找列中的最大值
【发布时间】:2017-08-05 20:51:29
【问题描述】:

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

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

我想根据 first 列中的最大值查找行值。在上面的示例中,我想根据列值“5”找到第四行,并获取其另外两个行值 20 30。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以像这样找到矩阵 A 的每一列的最大值的行索引:

    [~, maxRowIndicesByColumn] = max(A,[],1);
    

    然后获取第一列中值最大的行

    A(maxRowIndicesByColumn(1),:)
    
    ans =
    
     5    20    30
    

    【讨论】:

      【解决方案2】:

      使用logical indexing,您可以做到紧凑而快速:

      result = A(A(:,1)==max(A(:,1)),:)
      

      内部A(:,1)==max(A(:,1)),产生一个逻辑向量(0 或 1),每个元素对应于A 第一列中的一个元素,如果该元素是该元素中最大的,则等于1 A 的第一列(即max(A(:,1)))。在您的示例中,它将是 [0;0;0;1]

      然后,我们从A 中提取逻辑向量中包含1 的每一行。请注意,如果有多个值都相等max(A(:,1)),那么您将获得所有对应的行。

      【讨论】:

        猜你喜欢
        • 2015-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-16
        • 1970-01-01
        • 2015-06-29
        • 2011-04-21
        相关资源
        最近更新 更多