0
我需要代碼的以下代表性部分中的「for」循環儘可能高效地運行。代碼中的平均函數充當我自己的函數的代表佔位符。在Matlab中矢量化Meshgrid點的評估
x = linspace(-1,1,15);
y = linspace(2,4,15);
[xgrid, ygrid] = meshgrid(x,y);
mc = rand(100000,1);
z=zeros(size(xgrid));
for i=1:length(xgrid)
for j=1:length(ygrid)
z(i,j) = mean(xgrid(i,j) + ygrid(i,j) + xgrid(i,j)*ygrid(i,j)*mc);
end
end
我已經向量化的代碼和建立在該MC被複製爲每個網格點的矩陣由約2.5倍提高其速度。我的實現導致一個非常大的矩陣(3 x 22500000)充滿了重複的數據。我已經通過將矩陣轉換爲單精度來減輕了這種方法的內存損失,但似乎應該有一種更有效的方式來做我想做的事情,避免複製這麼多數據。
你有沒有考慮只複製'mc'一個維度,並使用循環的外循環?也考慮將'i'移到內部循環。 – user3528438
對於這樣的大型陣列,矢量化可能會導致內存問題。 For循環並不總是低效的,Matlab的JIT編譯有助於解決較小的問題,併爲更大的問題提供更好的內存使用。你可以考慮爲外部循環使用並行for循環。 – David