置換処理ではの異なる行列が出力に出力される必要があります。not like reshape
の場合、データは変更されません。permute
はデータを変更します。なぜMATLABは余分なメモリを必要としませんか?
ただし、多次元パーミュテーションのメモリ使用量をテストする場合は、使用する変数と同じです。ですから、私の質問は、どのように余分なメモリを使用しないように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
注意、データのその8GBの。
ブリリアント!私はMATLABが私を欺いていたのか疑問に思っていました。このコピーが実際に発生することを知ることは良いことです。 –
すばらしい答え!私は、プログラマがメモリ効率よりも優先される速度 –