我在parfor循环中调用外部函数,如下所示。
parfor idx = 1:2
import com.comsol.model.*
import com.comsol.model.util.*
model = ModelUtil.create('Model');
model.modelNode.create('comp1');
model.geom.create('geom1', 2);
model.geom('geom1').feature.create('sq1', 'Square');
model.geom('geom1').feature('sq1').set('size', '0.03125');
model.geom('geom1').feature('sq1').setIndex('pos', '0', 0);
model.geom('geom1').feature('sq1').setIndex('pos', '0', 1);
model.geom('geom1').run;
end
Error: MATLAB cannot determine whether "ModelUtil" refers to a function or variable.
See Parallel for Loops in MATLAB, "Unambiguous Variable Names".在阅读了the "Unambiguous Variable Names" part in the MATLAB parfor documentation之后,我非常理解为什么会发生这个错误。然而,我不知道如何修复它。
发布于 2015-05-13 03:23:57
我在使用.Net对象时遇到了同样的问题。像你一样,我发现它在非并行模式下工作得很好,问题只发生在parfor上。
这不是路径问题,这纯粹是一个Matlab语法/解析器问题。
作为一种变通方法,我将操作包装在单独的Matlab函数中,以便在parfor的作用域内不再含糊。在(否则不必要的)函数中,它解析类没有问题,即使从parfor内部调用也是如此。
发布于 2016-02-24 13:23:05
Vector的解决方案对我不起作用。问题是不同的工作者看不到您正在使用的库:您必须用javaaddpath更新parfor中的javapath。
https://stackoverflow.com/questions/24558249
复制相似问题