2013-07-11 3 views
0

У меня есть матрицасортировать несколько столбцов в соответствии с определенным порядком

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 

После сортировки матрицы AI должны получить: - Если только I1 используется для сортировки 1-й столбец

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 

Пожалуйста, предложите мне, как это сделать.

ответ

2

Если их размеры все же, это должно быть то, что вам нужно:

A([I1 I2 I3]); 

Если вы хотите, чтобы отсортировать столбцы по отдельности, вы можете использовать этот синтаксис:

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

или, например, столбцы 2 и 3:

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

Его не совсем то, что я хотел. Пожалуйста, проверьте мой отредактированный вопрос для большей ясности. Сортировка всех столбцов может быть выполнена не одновременно. Иногда может потребоваться сортировка отдельных столбцов, не затрагивая ни один из других столбцов. – roni

+0

См. Исправления некоторых предложений о том, как это сделать. –

+0

Спасибо, что принял ваш ответ. Это работает как шарм! – roni

Смежные вопросы