MATLAB - сортировка матрицы на основе сортировки вектора

77
10

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



У меня есть вектор "A" из 429 значений и матрица "B" значений 429x200. Строки в и B имеют одни и те же индексы. Мой вектор "A" содержит значения 1:1: 429, но они произвольно упорядочены по всему вектору. Я хочу изменить порядок A, чтобы он индексировался в порядке от 1 до 429, и я также хочу сортировать строки в матрице "B" в том же порядке, что и новый отсортированный "A" .


Можно ли это сделать быстро и легко без цикла?


Вот пример, иллюстрирующий мою мысль:


A =
5
3
1
2
4

B =
3 7 0 4 6
1 2 5 0 8
4 0 2 0 0
3 0 1 0 5
2 2 3 4 4

sortedA =

1
2
3
4
5

sortedB =

4 0 2 0 0
3 0 1 0 5
1 2 5 0 8
2 2 3 4 4
3 7 0 4 6


Спасибо всем!

спросил(а) 2021-01-25T21:52:48+03:00 4 месяца, 4 недели назад
1
Решение
77

Данные примера:


A = [ 5, 3, 1, 2, 4 ]';

B = [ 3, 7, 0, 4, 6; 1, 2, 5, 0, 8; 4, 0, 2, 0, 0; 3, 0, 1, 0, 5; 2, 2, 3, 4, 4 ]

Сортировка матриц:


[sortedA,IX] = sort(A);

sortedB = B(IX,:);

sortedA =
1
2
3
4
5

sortedB =
4 0 2 0 0
3 0 1 0 5
1 2 5 0 8
2 2 3 4 4
3 7 0 4 6

ответил(а) 2021-01-25T21:52:48+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема