0
我在matlab中編碼,由於matlab不能很好地處理「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
嗯。我沒有看到這種方法可以在沒有迭代過程的情況下完成,因爲您需要查看拉普拉斯算子的U(i,j)的鄰居。如果matlab執行代碼太慢,我可以建議的唯一方法是嘗試使用[parfor]的並行for循環(https://www.mathworks.com/help/distcomp/parfor.html) –