2

一直在尝试(未成功)使用 'which' 在包中定位 .m 文件。例如,当 Company.m 位于 +Contents 文件夹中时,调用“which('Company.m')”。

因此,如果我当前的文件夹是 C:\Users\Documents\Contents(添加到 Matlab 路径的路径),“which('Company.m')”表示找不到文件,但如果我当前的文件夹是 C:\Users*** \Documents\Contents\ +Contents,然后它就会知道位置。

为什么是这样?我认为'which'命令递归搜索所有子目录?无论如何都可以检索“Company.m”的路径名而不必专门输入该文件夹?

4

1 回答 1

1

那应该是:

which Contents.Company

如果您事先不知道它驻留在哪个包中(或者即使它在一个包中),您可以将它们全部导入:

import Contents.*
import OtherPackage.*
which -all Company

如果您仍然不满意,您可以获取所有可用顶级包的列表,并搜索它们公开的方法以获得您想要的功能:

 %# warning: this might take more than a few seconds
 p = meta.package.getAllPackages;
 b = cellfun(@(pkg) ismember('Company',{pkg.FunctionList.Name}), p);
 idx = find(b, 1, 'first');
 p{idx}.Name
于 2012-05-25T01:15:50.443 回答