Как мне отсортировать 2-D массив в MATLAB по одному столбцу?

44

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

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

 1     3
 5     7
-1     4

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

-1     4
 1     3
 5     7

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

-1     3
 1     4
 5     7

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

Теги:
sorting
matrix
octave

2 ответа

71
Лучший ответ

Я думаю, что функция sortrows - это то, что вы ищете.

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
  • 1
    Благодарю. Интересно, почему я пропустил это в «см. также» для сортировки
3

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

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

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

    data=data(idx,:)
    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню