在matlab中,如何按给定列中的最大元素按升序对矩阵列进行排序。
例如,给定矩阵A = [1 300 5; 100 1 2; 2 200 7],我想输出A = [300 1 5; 1 100 2; 200 2 7]。
我可以使用for循环来做到这一点,但是我一直认为我应该总是寻找一个矩阵运算来在matlab中做任何事情。
答案 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);