我正在尝试并行化以下代码:
for m = 1:t
dR((m-1)*3+1) = temp1(m);
dR((m-1)*3+2) = temp2(m);
dR(m*3) = temp3(m);
end
temp1,temp2,temp3只是大小为m X 1的向量.dR的大小是3m X 3m。
每当我使用parfor而不是for时,代码表示dR中的错误。我不知道为什么。请给我一些建议。
谢谢!
答案 0 :(得分:1)
你不正确"切片" dR
。要运行parfor
,需要根据规则described here对输出变量建立索引。要修复代码,您可以这样做:
dR = zeros(t, 3);
parfor m = 1:t
dR(m, 1:3) = [temp1(m), temp2(m), temp3(m)];
end
然后它具有dR
的正确索引形式 - 即固定索引列表,并且循环变量显示为下标之一。