【问题标题】:Sorting the columns of a matrix by "largest element" in matlab在matlab中按“最大元素”对矩阵的列进行排序
【发布时间】:2013-05-19 22:13:54
【问题描述】:

在 matlab 中,如何按给定列中的最大元素按升序对矩阵列进行排序。

例如,给定一个矩阵 A=[1 300 5; 100 1 2; 2 200 7],我想输出 A=[300 1 5; 1 100 2; 200 2 7]。

我可以使用 for 循环来做到这一点,但我一直认为我应该始终在 matlab 中寻找矩阵运算来做任何事情。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    找到 A 中每列的最大值并对其进行排序。我们需要排序的索引 (I)。

    >> [sortedmaxs,I]=sort(max(A,[],1),'descend')
    
    sortedmaxs =
    
       300   100     7
    
    
    I =
    
         2     1     3
    

    根据索引IA进行排序:

    >> Asort=A(:,I)
    
    Asort =
    
       300     1     5
         1   100     2
       200     2     7
    

    所以简而言之,你只需要这两行:

    [~,I]=sort(max(A,[],1),'descend');
    Asort=A(:,I);
    

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      相关资源
      最近更新 更多