Matlab排序矩阵,取决于降序和升序的两列

时间:2018-09-17 11:07:16

标签: matlab sorting

我想根据第三列的升序对三列矩阵进行排序,如果有平局,则应根据第一列的值降序对列进行排序。例如

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])我只能得到升序排序的矩阵。预先感谢!

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 排序设置为升序或降序,而不是列特定于。