对矩阵的两列进行排序,同时在 OCTAVE/MATLAB 中保持一列完整
Sorting two columns of a matrix while keeping one intact in OCTAVE/MATLAB
我有这个矩阵:
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];
我需要第一列保持原样,对第二列(按降序排列)和 'keep along' 第三列的值进行排序。如果我使用 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)];
我有这个矩阵:
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];
我需要第一列保持原样,对第二列(按降序排列)和 'keep along' 第三列的值进行排序。如果我使用 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)];