これは非常に一般的な質問であり、詳細についてはお答えできません。主に何i
に関与するかについて。次のように仮定します
for i = 1:m
A(i,:) += i;
endfor
これは、はるかに効率的な次のように記述できます。
A .+ (1:m)'
比較してください:
octave> n = 1000;
octave> A = B = rand (n);
octave> tic; for i = 1:n, B(i,:) += i; endfor; toc
Elapsed time is 0.051 seconds.
octave> tic; C = A.+ (1:n)'; toc
Elapsed time is 0.01 seconds.
octave> isequal (C, B)
ans = 1
非常に古いバージョンの octave を使用している場合は、代わりにbsxfun (@plus, A, (i:m)')
.
ただし、i
式の右側が他の変数のインデックス付けに使用される場合、解決策は異なります。たぶん、解決策はcumsum
、または他のcumfoo
機能です。
あなたの質問は基本的に「コードをベクトル化するにはどうすればよいですか?」であり、これは非常に大きなテーマであり、何をベクトル化しようとしているのかはわかりません。