1

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

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

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

4

1 回答 1

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);
于 2013-05-19T22:45:50.737 回答