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
以下代码:
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