MATLAB parfor error: function or variable?

MATLAB parfor error: function or variable?

以下代码:

matlabpool('open','local',2)

parfor i=1:5
    proc = System.Diagnostics.Process;
end

导致错误:

Error: MATLAB cannot determine whether "System" refers to a function or variable.

但是,当我再次执行parfor循环时(报错后),它跑通了!我发现了几个类似的问题,但我无法实施建议的解决方案。

MATLAB parfor - cannot determine whether "ModelUtil" refers to a function or variable?

MATLAB using parfor (parallel computing toolbox) and custom packages with +

我想不通为什么循环会第二次运行。如果我再打电话给

matlabpool close

再次执行整个脚本,错误再次出现。所以它只会在池启动后第一次发生。有什么想法吗?

这是因为您在 parfor 循环中使用的任何变量或函数必须在代码 解析时 明确地 定义 [=30] =].如果有任何歧义,Matlab 会选择抛出错误而不是通过假设来搞砸。

只需在 parfor 循环之前定义一个创建所需对象的匿名函数,然后您就可以在 parfor 循环中使用它.

这个 运行 在我的机器上很好(Matlab R2013a):

getSystemProcess = @() System.Diagnostics.Process ;
parfor i=1:5
    proc = getSystemProcess();
end

阅读本 Matlab 章节,了解有关如何在 parfor 循环中解释 variable/function 名称的更多信息:Unambiguous Variable Names