仅根据一列对矩阵进行排序

时间:2018-11-20 15:34:49

标签: matlab sorting

我有这个矩阵A,

A= [10  -12  4  8;
    1  3  11 -2;
    1  -9  8  0;
    1  1  9  3].

如果我在Matlab B = sortrows(A)中使用sortrows函数。我会明白的。

B = [1    -9     8     0;
     1     1     9     3;
     1     3    11    -2;
     10   -12     4     8].

我想要的答案是这个。

B = [1   3     11     -2; 
     1  -9  8      0;
     1   1  9      3;
    10   -12     4     8]

问题是,我想在这里对行进行排序,但仅基于第1列。如果第1列中的值相同,则不要根据第2列对它们进行排序(一般情况下,此函数执行)。

如果有人能帮助我,我真的很感激。

谢谢。

1 个答案:

答案 0 :(得分:4)

仅使用函数sort对第一列进行排序,仅保留索引,然后使用此索引对整个矩阵进行排序。

A= [10  -12  4  8;
    1  3  11 -2;
    1  -9  8  0;
    1  1  9  3];
[~,ind] = sort(A(:,1))
B = A(ind,:)

或仅使用函数sortrows的第二个参数来精确调整列排序向量:

B = sortrows(A,1)