Matlab parfor 错误。切片变量

Matlab parfor error. Slicing variables

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

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

谢谢!

你说得不对 "slicing" dR。对于parfor到运行,输出变量需要按照规则described here进行索引。要修复您的代码,您可以这样做:

dR = zeros(t, 3);
parfor m = 1:t
    dR(m, 1:3) = [temp1(m), temp2(m), temp3(m)];
end

这就具有 dR 的正确索引形式 - 即固定索引列表,并且循环变量显示为下标之一。