#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. Спасибо! Похоже, что мой длинный описательный заголовок можно просто решить с помощью одной функции.