/edit :このトピックに関する興味深い議論については、こちらを参照してください。ありがとう@ダン
a(m,n) = 0
のサイズによっては、を使用する方が を使用するa
よりも高速に見えますa = zeros(m,n)
。ループ前の事前割り当てに関しては、両方のバリアントは同じですか?
/edit :このトピックに関する興味深い議論については、こちらを参照してください。ありがとう@ダン
a(m,n) = 0
のサイズによっては、を使用する方が を使用するa
よりも高速に見えますa = zeros(m,n)
。ループ前の事前割り当てに関しては、両方のバリアントは同じですか?
それらは間違いなく同じではありません。
のパフォーマンスを上回る方法はありますがa=zeros(m,n)
、単純に実行a(m,n) = 0
するのは安全な方法ではありません。のエントリがa
すでに存在する場合、それらは存在し続けます。
いくつかの優れたオプションについては、これを参照してください。リスクを気にしない場合は、ループを逆方向に実行することも検討してください。
あなたのmとn次第だと思います。時間を自分で確認できる
tic; b(2000,2000) = 0; toc;
Elapsed time is 0.004719 seconds.
tic; a = zeros(2000,2000); toc;
Elapsed time is 0.004399 seconds.
tic; a = zeros(2,2); toc;
Elapsed time is 0.000030 seconds.
tic; b(2,2) = 0; toc;
Elapsed time is 0.000023 seconds.