按升序对矩阵的行进行排序

时间:2016-04-15 08:13:04

标签: matlab sorting

我想按升序排序矩阵,但我不想影响第三列。例如,

的排序版本
A= [ 2 1 3; 
     5 4 1; 
     4 3 2] 

将是

B= [1 2 3; 
    4 5 1; 
    3 4 2]  

2 个答案:

答案 0 :(得分:2)

Matlab提供了相当多的内部帮助,因此使用help FUNCTION/CLASS会为您提供以下信息。如果您不知道FUNCTION\CLASS名称,请使用lookfor TERM查看匹配列表,或者docsearch TERM

Stock matlab同时提供sortsortrows。你需要后者。

sortrows(X,C)

其中C是要对其进行排序的列索引列表,其符号可以是正对应的升序,也可以是负的降序。

在你的例子中你会想要这个:

sortrows(A',[1,2])'

'向matlab表明你需要转置矩阵,它基本上在调用sortrows之前和之后交换行和列。

答案 1 :(得分:1)

您可以对前两列进行排序并相应地更新矩阵:

编辑:更新维度

A(:,1:2) = sort(A(:,1:2),2);