Операция перестановки должна выводить на выходе другую матрицу, не нравится reshape
, где данные не изменены, permute
изменяет данных.
Однако, если вы проверяете использование памяти в многомерной перестановке, она такая же, как и используемая переменная. Итак, мой вопрос: как MATLAB выполняет эту перестановку, чтобы избежать использования дополнительной памяти?
Дополнительный вопрос: существует ли какой-либо сценарий, в котором MATLAB фактически использует дополнительную память?
Тестовый код:
function out=mtest()
out = ones(1e3,1e3,1e3); % Caution, 8Gb
out=permute(out,[3 1 2]);
end
Вызвать это следующим образом:
profile -memory on
a=mtest;
profreport
ПРЕДОСТЕРЕЖЕНИЕ, его 8 Гб данных.