我想按升序排序矩阵,但我不想影响第三列。例如,
的排序版本A= [ 2 1 3;
5 4 1;
4 3 2]
将是
B= [1 2 3;
4 5 1;
3 4 2]
答案 0 :(得分:2)
Matlab提供了相当多的内部帮助,因此使用help FUNCTION/CLASS
会为您提供以下信息。如果您不知道FUNCTION\CLASS
名称,请使用lookfor TERM
查看匹配列表,或者docsearch TERM
。
Stock matlab同时提供sort
和sortrows
。你需要后者。
sortrows(X,C)
其中C是要对其进行排序的列索引列表,其符号可以是正对应的升序,也可以是负的降序。
在你的例子中你会想要这个:
sortrows(A',[1,2])'
'
向matlab表明你需要转置矩阵,它基本上在调用sortrows
之前和之后交换行和列。
答案 1 :(得分:1)
您可以对前两列进行排序并相应地更新矩阵:
编辑:更新维度
A(:,1:2) = sort(A(:,1:2),2);