我正在尝试优化以下MATLAB代码的时间效率,目前需要花费超过4个小时来运行(我已经预先分配了这两个结构,只是此处未包括该部分):
for combination = 1:1771
for hankel_size = 1:4;
for window = 1:999
Output.bin_r(:, window, combination, hankel_size) = bsxfun(@minus, data.hankel_index_mean(window, combination ,hankel_size),centers(window, :, hankel)');
Output.score(window, combination, hankel_size) = probs(window, :, hankel_size)*Output.bin_r(:, window, combination, hankel_size);
end
end
end
注意:
预先感谢您的帮助!
parfor combination = 1:1771
for hankel_size = 1:4;
for window = 1:999
Output.bin_r(:, window, combination, hankel_size) = bsxfun(@minus, data.hankel_index_mean(window, combination ,hankel_size),centers(window, :, hankel)');
Output.score(window, combination, hankel_size) = probs(window, :, hankel_size)*Output.bin_r(:, window, combination, hankel_size);
end
end
end
parfor
利用您CPU中的所有内核。
通过matlab默认值(在调用并行函数(例如parfor
或spmd
)时打开一个)或通过调用parpool
或显式打开一个并行池来打开并行池gcp
。
在首页->并行->并行首选项下编辑并行首选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句