2015-08-28 3 views
1

Скажем, если я делаю это для некоторой матрицы A:Реверс сортировки столбцов матрицы

[sorted,inds] = sort(A,1,'descend') 

Как сделать обратный вид этой матрицы?

мне нужно что-то вроде этого: http://blogs.mathworks.com/loren/2007/08/21/reversal-of-a-sort/#7

Любые идеи?

Спасибо

+0

Скажите «A = [8 4 6 8; 3 2 5 6; 9 3 4 5]». Каким должен быть выход? –

+0

Такая же матрица. Пожалуйста, см. Предоставленную ссылку - есть пример для простого случая 1D –

+0

Та же матрица? Ничего не делать? Пожалуйста, будьте более ясными. Какой результат вы хотите? –

ответ

2
A = [8 4 6 8;3 2 5 6;9 3 4 5]; 
[sorted,inds] = sort(A,1,'descend') 

B = NaN(size(A)); 
B(bsxfun(@plus, inds, 0:size(A,1):numel(A)-1)) = sorted; 

дает B равно A.

Фокус в том, что inds следует интерпретировать как индексы столбцов. Вам нужно преобразовать в линейные индексы, что легко сделать с помощью bsxfun.

+0

Спасибо! Это то, что мне нужно –

+1

@sof_dff Рад, что это сработало. Мне потребовалось некоторое время, чтобы понять, чего вы хотели! –

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