matlab排序2列:列1下降,列2上升

时间:2014-12-01 20:26:30

标签: arrays matlab sorting matrix vector

我有一个像这样的3列数组:

A = [6 -1 0;
     6  0 3;
     1  4 3;
     1  2 5];

我需要第一列按降序排列,第二列按升序排列,第三列更改另外两列(即它们没有排序),如下所示:

B = [6 -1 0;
     6  0 3;
     1  2 5;
     1  4 3];

2 个答案:

答案 0 :(得分:0)

如果要保持第三列不变,

 B = A;
 B(:,1) = sort(B(:,1),'descend');
 B(:,2) = sort(B(:,2),'ascend');

如果您希望第三列随第二列更改,那么

[B(:,2),ind] = sort(B(:,2),'ascend');
B(:,3) = B(ind,3);

B =

 6    -1     0
 6     0     3
 1     2     5
 1     4     3

答案 1 :(得分:0)

如果您希望将行保持为记录,并根据第1列和第2列对它们进行排序,请使用sortrows(),使用负列索引来指示要对其值进行排序的列按降序排列。

B = sortrows(A, [-1 2])