首页 > 解决方案 > 仅根据一列对矩阵进行排序

问题描述

我有这个矩阵A,

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

如果我在 Matlab 中使用 sortrows 函数B = sortrows(A)。我会得到这个。

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 列对它们进行排序(通常该函数执行)。

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

谢谢你。

标签: matlabsorting

解决方案


仅使用函数仅保留索引对第一列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) 

推荐阅读