根据特定顺序对多个列进行排序

时间:2013-07-11 14:33:47

标签: matlab sorting indexing

我有一个矩阵

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

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

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

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

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

如果仅使用I2对第二列进行排序

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

请建议我怎么做。

1 个答案:

答案 0 :(得分:2)

如果它们的尺寸完全相同,那么这应该是您所需要的:

A([I1 I2 I3]);

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

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

或者例如第2和第3列:

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