Matlab parfor错误。切片变量

时间:2018-04-05 05:45:01

标签: matlab parfor

我正在尝试并行化以下代码:

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中的错误。我不知道为什么。请给我一些建议。

谢谢!

1 个答案:

答案 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的正确索引形式 - 即固定索引列表,并且循环变量显示为下标之一。