Как мне отсортировать двумерный массив в MATLAB по одному столбцу? - PullRequest
45 голосов
/ 25 сентября 2008

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

Например, если моя матрица data равна:

 1     3
 5     7
-1     4

Тогда желаемый результат (сортировка по первому столбцу) будет:

-1     4
 1     3
 5     7

Но вывод sort(data):

-1     3
 1     4
 5     7

Как мне отсортировать эту матрицу по первому столбцу?

Ответы [ 2 ]

75 голосов
/ 25 сентября 2008

Я думаю, вам нужна функция sortrows .

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
4 голосов
/ 07 марта 2016

Альтернатива sortrows(), которая может применяться к более широким сценариям.

  1. сохранить индексы сортировки строки / столбца, которые вы хотите заказать:

    [~,idx]=sort(data(:,1));
    
  2. изменить порядок всех строк / столбцов в соответствии с предыдущими отсортированными индексами

    data=data(idx,:)
    
...