Отсортировать матрицу по определенному столбцу и далее отсортировать ее с использованием другого столбца, сохраняя при этом первый порядок сортировки

#matlab

#matlab

Вопрос:

У меня есть матрица A, состоящая из 3 столбцов. Первый столбец — это координата x, второй — координата y, и, наконец, третий — значение, соответствующее этой координате x amp; y. A изначально сортируется по первому столбцу.

 A=[
-10    15    0.1
-10    9     0.2
-10    17    0.3
  1     0    0.4
  1    -1    0.5
  1    30    0.6
18      1    0.7
18      9    0.8
18    -17    0.9
]
  

Как мне дополнительно отсортировать ее по столбцу y, сохраняя при этом порядок в столбце x? Ожидаемый результат:

 A=[
-10     9    0.2
-10    15    0.1
-10    17    0.3
  1    -1    0.5
  1     0    0.4
  1    30    0.6
18    -17    0.9
18      1    0.7
18      9    0.8
]
  

Длина (или блок) значения x не обязательно будет составлять три строки (или согласованную либо) матрицы, -10 может составлять 5 строк, 18 может быть и 15.

Заранее спасибо.

Ответ №1:

Для этого вы можете использовать sortrow. В этом случае вы хотите сначала выполнить сортировку A на основе первого столбца, а затем по второму столбцу:

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

ans =

  -10.0000    9.0000    0.2000
  -10.0000   15.0000    0.1000
  -10.0000   17.0000    0.3000
    1.0000   -1.0000    0.5000
    1.0000         0    0.4000
    1.0000   30.0000    0.6000
   18.0000  -17.0000    0.9000
   18.0000    1.0000    0.7000
   18.0000    9.0000    0.8000
  

Комментарии:

1. Спасибо! Похоже, что мой длинный описательный заголовок можно просто решить с помощью одной функции.