2016-04-15 6 views
0

Я хотел бы отсортировать матрицу в порядке возрастания, однако я не хочу влиять на третий столбец. Например, отсортированный версияСортировка строк матрицы в порядке возрастания

A= [ 2 1 3; 
    5 4 1; 
    4 3 2] 

Было бы

B= [1 2 3; 
    4 5 1; 
    3 4 2] 
+0

Видя [двойное] (http://stackoverflow.com/q/5347377/958580)? Используйте поиск! Двойные агенты не получают значков: P (хотя, возможно, так они, вероятно, будут двойными рогатыми единорогами) – Carel

ответ

1

Вы можете просто отсортировать 1st два столбца и обновления матрицы соответственно:

редактировать: обновленное измерение

A(:,1:2) = sort(A(:,1:2),2); 
+0

Я думаю, вы захотите указать размерность равным 2. OP хочет сортировать по строкам, не затрагивая последний столбец. – rayryeng

+1

Да, сэр, вы правы, я просто хочу, чтобы строки были в порядке возрастания, но 3-й столбец не должен быть затронут. – well

2

Matlab предоставляет довольно много ингушей так что с помощью help FUNCTION/CLASS вы предоставили бы вам следующую информацию. Если вы не знаете имя FUNCTION\CLASS, используйте lookfor TERM для списка совпадений или поочередно docsearch TERM.

Stock matlab предоставляет как sort, так и sortrows. Тебе понадобится последний.

sortrows(X,C) 

Где C список индексов столбцов для сортировки, знак может быть положительными, соответствующим для порядка возрастания или отрицательным порядке убывания.

В вашем примере вы хотите:

sortrows(A',[1,2])' 

' указывает на MATLAB, что вам нужно матрицу транспонированной, которая в основном SWAPS строк и столбцов до и после того, как sortrows называется.

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