问题描述
我有这个矩阵:
data=[1 5402783 1
2 43359352 2
3 26118700 3
4 33091887 4
5 890931 5
6 826897 6
7 1188749 7
8 1239861 8];
我需要第一列保持原样,对第二列进行排序(按降序)并“保持”第三列的值。如果我使用 sort(data)
,它将对所有 3 列进行排序。
我试过了:
[~,idx]=sort(data(:,2),'descend');
data=data(idx,:)
但这显然是错误的。
输出应该是:
[1 43359352 2
2 33091887 4
3 26118700 3
4 5402783 1
5 1239861 8
6 1188749 7
7 890931 5
8 826897 6]
解决方法
您需要做的就是最后重新组合数据矩阵,取出未排序和已排序的部分:
data = [1 5402783 1
2 43359352 2
3 26118700 3
4 33091887 4
5 890931 5
6 826897 6
7 1188749 7
8 1239861 8];
[~,idx] = sort(data(:,2),'descend');
data = [data(:,1),data(idx,2:3)];