Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OCTAVE/MATLAB中对矩阵的两列进行排序,同时保持一列的完整性_Matlab_Octave - Fatal编程技术网

在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如果答案完全回答了您的问题,您可以接受答案(单击勾号)