2014-11-21 3 views
1

У меня есть 2D матрицу и хотите отсортировать строки и столбцы на основе двух других векторов, то есть один для заказа строк другой для заказа столбцов в MATLABсортировки матрицы в MATLAB на основе другого вектора

Пример: A (Matrix на заказ)

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

Row Vector (Порядок сортировки строк матрицы A)

1 
4 
2 
3 

и вектор-столбец

1 5 4 2 3 

модифицировали

0 4 3 1 2 
3 8 0 1 2 
1 7 9 1 8 
2 2 6 3 4 
+0

индексирование в Matlab начинается с 1, ваш индекс векторов возвращает ошибку в их текущем формате. –

ответ

2

Как насчет:

ModifiedA=A(RowVector,ColumnVector); 

Примечание: индексация Matab начинается в 1 не 0, адаптировать свои индексы векторов соответственно.

+1

На самом деле чтение кода имеет больше смысла, чем описание проблемы ... довольно грустно, что требуется ответ, чтобы выяснить, что задает ОП - +1. – rayryeng

1

В MATLAB, вы можете использовать второй выход sort, чтобы получить 1 на основе индексов, что MATLAB, которые ищут (в этом случае вы могли бы просто добавили 1, но с использованием sort работает, даже если строки и столбцы векторы не последовательный).

[~,rowIdx] = sort(rowVector); 
[~,colIdx] = sort(colVector); 

И тогда вы можете применить операцию индексации к матрице:

modifiedA = A(rowIdx, colIdx); 
+0

Не нужно сортировать по этим векторам. ОП уже предоставил заказ, в котором каждый заказ должен быть заказан, поэтому сортировка является излишней. – rayryeng

Смежные вопросы