0
不幸的是,我不得不運行一個簡單但巨大的3次嵌套for循環。循環填充表示三維座標中函數強度的三維矩陣。 (需要填充整個矩陣,因爲我需要它來繪製3D強度雲圖...)爲什麼matlab不能並行運行我的簡單嵌套for循環?
我想並行運行它,因爲使用我的筆記本電腦需要數週時間才能順序運行:
% Initialize vars
c0values = 400:1:600;
n0values = 1:1:10000;
phivalues = 0:0.1:2*pi;
mtxHeight = zeros(numel(c0values),numel(n0values),numel(phivalues));
% Run over c0
parfor c0ctr=1:numel(c0values)
% Run over n0
for n0ctr=1:numel(n0values)
% Run over phi
for phictr=1:numel(phivalues)
% Sum over ell
dHeight = 0;
for ell=1:10
dHeight = dHeight + fnToMaximize(mtxObs(ell,:), ...
c0values(c0ctr), ...
n0values(n0ctr), ...
phivalues(phictr));
end
mtxHeight(c0ctr,n0ctr,phictr) = dHeight;
end
end
end
由於某些原因,Matlab抱怨mtxHeight
無法分類並拒絕運行並行化的代碼。
我在做什麼是不允許的?
並行化並不是一件容易的事。特別是對於一臺機器。 – knedlsepp