【发布时间】: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
在 matlab 中,如何按给定列中的最大元素按升序对矩阵列进行排序。
例如,给定一个矩阵 A=[1 300 5; 100 1 2; 2 200 7],我想输出 A=[300 1 5; 1 100 2; 200 2 7]。
我可以使用 for 循环来做到这一点,但我一直认为我应该始终在 matlab 中寻找矩阵运算来做任何事情。
【问题讨论】:
标签: matlab
找到 A 中每列的最大值并对其进行排序。我们需要排序的索引 (I)。
>> [sortedmaxs,I]=sort(max(A,[],1),'descend')
sortedmaxs =
300 100 7
I =
2 1 3
根据索引I对A进行排序:
>> Asort=A(:,I)
Asort =
300 1 5
1 100 2
200 2 7
所以简而言之,你只需要这两行:
[~,I]=sort(max(A,[],1),'descend');
Asort=A(:,I);
【讨论】: