Сортировать матрицу с другой матрицей
Предположим, у меня есть матрицаA
и я сортирую строки этой матрицы. Как мне повторить тот же порядок на матрицеB
(конечно же, такого же размера)?
Например.
A = rand(3,4);
[val ind] = sort(A,2);
B = rand(3,4);
%// Reorder the elements of B according to the reordering of A
Это лучшее, что я придумал
m = size(A,1);
B = B(bsxfun(@plus,(ind-1)*m,(1:m)'));
Из любопытства какие-нибудь альтернативы?
Обновить: Отличное решение Джонаса профилированные на 2008a (XP):
n = n0.048524 1.4632 1.4791 1.195 1.0662 1.108 1.0082 0.96335 0.93155 0.90532 0.88976
n = 2 м0.63202 1.3029 1.1112 1.0501 0.94703 0.92847 0.90411 0.8849 0.8667 0.92098 0.85569
Это просто говорит о том, что циклы больше не являются анафемой для программистов MATLAB благодаряJITA (Возможно).