我正在开发一个MATLAB程序,该程序使用许多其他定制程序包,通常包含类似命名的文件。所以我决定使用自定义包方法(http://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html)在引用我正在使用的各种包中的特定函数时有效地获得点符号。例如,我有一个名为pose
的包,它具有以下文件结构:
MATLAB % on the MATLAB path
--- +pose
--- detect.m
--- MORE STUFF
--- +tracker
--- MORE STUFF
--- main.m
在我的main.m
文件中,我有一个并行化的for循环:
parfor i=start:stop
... BLAH BLAH
boxes = pose.detect(stuff);
... BLAH BLAH
end
但我一直收到错误
MATLAB无法确定“姿势”是否指的是a 功能或变量。 请参阅MATLAB中的“循环并行”,“明确的变量名称”。
查看MATLAB并行编程文档(http://www.mathworks.com/help/distcomp/programming-considerations.html),看起来你在并行for循环中使用的所有函数在for循环中必须是透明的。但这似乎直接违反了MATLAB中的其他并行编程原理,即“所有执行parfor-loop的工作者必须具有与客户端相同的MATLAB搜索路径”。
有谁知道如何调和这个?
答案 0 :(得分:1)
找到答案!
我通过将path命令放在worker启动文件中来完成此网页http://www.mathworks.com/help/distcomp/share-code-with-the-workers.html的解决方案:
matlabroot\toolbox\local\startup.m
所以我添加了行path('/custom_dir/MATLAB/', path);
,效果很好。