1

我正在开发一个 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 无法确定“pose”是指函数还是变量。请参阅 MATLAB 中的并行 for 循环,“明确的变量名称”。

查看 MATLAB 并行编程文档(http://www.mathworks.com/help/distcomp/programming-considerations.html),您在并行 for 循环中使用的所有函数似乎在 for 循环中都必须是透明的。但这似乎直接违反了 MATLAB 中的另一个并行编程原则,即“所有执行 parfor-loop 的工作人员必须具有与客户端相同的 MATLAB 搜索路径”。

有谁知道如何调和这个?

4

1 回答 1

1

找到了答案!

我从这个网页http://www.mathworks.com/help/distcomp/share-code-with-the-workers.html完成了解决方案,方法是将路径命令放在工作程序启动文件中: matlabroot\toolbox\local\startup.m

所以我添加了这条线path('/custom_dir/MATLAB/', path);,效果很好。

于 2014-09-17T19:19:36.957 回答