我想根据第三列的升序对三列矩阵进行排序,如果有平局,则应根据第一列的值降序对列进行排序。例如
A=
745 30 0.9
421 60 0.8
374 29 0.9
358 32 0.9
应更改为
A=
421 60 0.8
745 30 0.9
374 29 0.9
358 32 0.9
使用sortrow(A,[3,1])我只能得到升序排序的矩阵。预先感谢!
答案 0 :(得分:3)
您可以根据列号的符号选择是升序还是降序。
根据docs,负值会使给定的列降序排列。
列:列排序向量,指定为非零整数标量或非零整数的向量。每个指定的整数值都指示要作为排序依据的列。 负整数表示排序顺序是降序。
所以你想要
B = sortrows( A, [3, -1] );
如果要更加明确,可以使用direction
标志,如Sardar在评论中所指出的。这给出了相同的结果,但是仅从R2017a (1)开始可用:
B = sortrows( A, [3, 1], {'ascend', 'descend'} );
(1):2017a docs显示此功能,2016b docs仅显示mode
标志,该标志将 all 排序设置为升序或降序,而不是列特定于。