我有这个矩阵A,
A= [10 -12 4 8;
1 3 11 -2;
1 -9 8 0;
1 1 9 3].
如果我在MatlabB = 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列对它们进行排序(在genreal中,此函数执行第2列(。
如果有人能帮我的话,我真的很感激。
谢谢。
使用函数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)