繰り返しアルゴリズムで何回も異なる関数に何回も渡す必要があるいくつかの大きな行列があります。プログラムを高速化するために関数への変数の不要なコピーを避けるにはどうすればよいですか?これらの行列を構造体やクラスにグループ化し、参照やポインタで渡す方法はありますか?Matlabで構造体またはクラスオブジェクトを関数に参照渡しする方法
a=zeros(1000,1000);
b=zeros(1000,1000);
d=myfunction(a,b);
a=myfunction2(b,d);
....
ありがとうございます。
更新:コメントに表示されているように、詳細を提供する必要があります。私はいくつかの大きな行列を持っています。それらのプログラムのうちのいくつかはプログラム内で一定のままであり、他のものは反復ごとに各機能において変化する。したがって、これらの行列を値で渡すと、Matlabはそのコピーを作成し、値を変更して関数の出力としてコピーし、スコープから外して破棄し、これらの不要なコピーをすべて繰り返しますひどく遅い。もし私がC++でプログラムしたいのであれば、これらの行列に対してオブジェクト指向プログラミングを使用し、それらを関数への参照として渡しますが、MATLABで可能かどうかはわかりません。
'myfunction'が' a'と 'b'を変更しない場合は、変数のコピーがなくなり、参照として渡されます。 MATLABはかなりスマートであり、これらのことはすべてフードの下で行います –
http://stackoverflow.com/questions/38113315/matlab-variable-passing-and-lazy-assignment/ –
@AnderBiguriこれらは参考として渡されません。コピーオンライト(copy-on-write)の振る舞いで値を渡す。 http://stackoverflow.com/questions/38113315/matlab-variable-passing-and-lazy-assignment/への私の答えを参照してください。 –