【问题标题】:sort multiple columns according to particular order根据特定顺序对多列进行排序
【发布时间】:2013-07-11 14:33:47
【问题描述】:

我有一个矩阵

A = 1   1   1
    2   2   2
    3   3   3
    4   4   4 
    5   5   5

我有 3 个数组,其中包含我想要分别对各个列进行排序的顺序。示例 I1 表示第 1 列,I2 表示第 2 列,......

I1 = 5   I2 = 4   I3 = 3
     4        3        2 
     3        2        1
     2        1        5
     1        5        4

对矩阵 A 进行排序后,我应该得到:- 如果只使用 I1 对第一列进行排序

A = 5   1   1
    4   2   2
    3   3   3
    2   4   4 
    1   5   5

如果只使用 I2 对第 2 列进行排序

A = 1   4   1
    2   3   2
    3   2   3
    4   1   4 
    5   5   5

如果只使用 I3 对第 3 列进行排序

A = 1   1   3
    2   2   2
    3   3   1
    4   4   5 
    5   5   4

如果只使用 I1,I2,I3 对所有列进行排序

A = 5   4   3
    4   3   2
    3   2   1
    2   1   5 
    1   5   4

请建议我怎么做。

【问题讨论】:

    标签: matlab sorting indexing


    【解决方案1】:

    如果它们的尺寸都相同,这应该是你需要的:

    A([I1 I2 I3]);
    

    如果您希望单独对列进行排序,可以使用以下语法:

    A(:,2)=A(I2,2);
    

    或者例如第 2 列和第 3 列:

    A(:,[2 3]) = [A(I2,2) A(I3,3)];
    

    【讨论】:

    • 这不是我想要的。请检查我编辑的问题以获得更好的清晰度。所有列的排序可能不会同时进行。有时可能需要单列排序而不影响任何其他列。
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多