2016-04-15 121 views
0

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

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

排序后的版本将

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

看到[double](http://stackoverflow.com/q/5347377/958580)?使用搜索!双重代理人没有获得徽章:P(虽然他们可能会这样,双角独角兽并不少见) – Carel

回答

1

可以一日两列只是排序,并更新相应的矩阵:

编辑:更新尺寸

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

我想你会想要将维数指定为2.OP想按行排序而不会影响最后一列。 – rayryeng

+1

是的,先生,你是对的,我只是想升序排列,但第三列不应该受到影响。 – well

2

Matlab提供了很多inhou se帮助使用help FUNCTION/CLASS将为您提供以下信息。如果您不知道FUNCTION\CLASS名称,请使用lookfor TERM获取匹配列表,或者替换docsearch TERM

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

sortrows(X,C) 

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

在你的榜样,你会想这样的:

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

'指示,你需要换位矩阵,前后sortrows被调用后,基本上交换行和列MATLAB。