我正在處理一個帶有三個嵌套for循環的函數,對於其預期用途來說太慢了。瓶頸顯然是循環部分 - 幾乎100%的執行時間都花在最內層的循環中。
該函數採用名爲rM
作爲輸入二維矩陣,並返回一個名爲ec
3D矩陣:Matlab - 加速嵌套For循環
rows = size(rM, 1);
cols = size(rM, 2);
%preallocate.
ec = zeros(rows+1, cols, numRiskLevels);
ec(1, :, :) = 100;
for risk = minRisk:stepRisk:maxRisk;
for c = 1:cols,
for r = 2:rows+1,
ec(r, c, risk) = ec(r-1, c, risk) * (1 + risk * rM(r-1, c));
end
end
end
關於加快for循環任何幫助,將不勝感激......
它看起來像第二環路可以被矢量:除去'當c = 1:cols'及其'end',和替換''由C':'在最裏行。這應該有助於減少時間 –
@LuisMendo感謝您的建議。我實現了它,但有趣的是,使代碼運行速度比以前更慢。 – bluebox
你究竟想要做什麼?也許使用不同的計算方法,而不是試圖加速當前的計算,這是一個可行的解決方案? –