在matlab中用“最大元素”对矩阵的列进行排序

时间:2013-05-19 22:13:54

标签: matlab

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

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

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

1 个答案:

答案 0 :(得分:2)

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

>> [sortedmaxs,I]=sort(max(A,[],1),'descend')

sortedmaxs =

   300   100     7


I =

     2     1     3

根据索引A排序I

>> Asort=A(:,I)

Asort =

   300     1     5
     1   100     2
   200     2     7

简而言之,您只需要这两行:

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