0
私はmatlabでコーディングしていますが、matlabは "for"ループではうまく動作しないので、できるだけ早く行うことができます。ここでは "for"を扱う私のコードの一部です。行列計算のforループを避ける
for i = 1:size(U,1)
for j=1:size(U,2)
v(i,j) = U(mod(i+1-1,size(U,1))+1,j) + U(i,mod(j+1-1,size(U,2))+1) ...
+ U(mod(i-1-1,size(U,1))+1,j) + U(i,mod(j-1-1,size(U,2))+1) - 4*U(i,j);
end
end
私のマトリックスには周期的な境界条件があります。そのため、「mod」関数を使用しています。 このコードはmatlabの "del2"関数と実際に似ていますが、matlabのバージョンは周期的な境界条件では機能しません。 meshgrid
を使用して
matlabが "for"ループでうまく動作しない理由を説明してください –
@BradDay "for"ループが多すぎると、同じコードを別の言語で書くとシミュレーションの実行時間を長くすることができますC++のようなプログラミングは速くなるでしょう。とにかく、 "for"のようなループ構造の代替案を探しています。それはそれです... – aaa
Hmm。あなたがラプラシアンのためにU(i、j)の隣人を見る必要があるので、反復的なプロセスなしにこれができる方法は見当たりません。 MATLABがコードをあまりにも遅く実行していると私が提案できる唯一のことは、[parfor](https://www.mathworks.com/help/distcomp/parfor.html)で並列forループを利用しようとすることです。 –