在OCTAVE/MATLAB中对矩阵的两列进行排序,同时保持一列的完整性
我有一个矩阵:在OCTAVE/MATLAB中对矩阵的两列进行排序,同时保持一列的完整性,matlab,octave,Matlab,Octave,我有一个矩阵: 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]; 我需要第一列保持原样,对第二列进行排序(降序),并“保留”第三列的值。如果我使用排序(数据)它会对所有3列进行排序 我试过: [~,idx]=sort(data(:,2),'descend'); data=
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];
我需要第一列保持原样,对第二列进行排序(降序),并“保留”第三列的值。如果我使用排序(数据)
它会对所有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)];
谢谢你!!我知道我就在拐角处。拿care@rodrigoguevara如果答案完全回答了您的问题,您可以接受答案(单击勾号)