我有这个矩阵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列对它们进行排序(一般情况下,此函数执行)。
如果有人能帮助我,我真的很感激。
谢谢。
答案 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)