Подтвердить что ты не робот

Как я могу отсортировать двухмерный массив в MATLAB по отношению к одному столбцу?

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

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

 1     3
 5     7
-1     4

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

-1     4
 1     3
 5     7

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

-1     3
 1     4
 5     7

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

4b9b3361

Ответ 1

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

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7

Ответ 2

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

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

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

    data=data(idx,:)