尝试(不成功)使用'which'来查找包中的.m文件。例如,当Company.m在+ Contents文件夹中时,调用“which('Company.m')”。
因此,如果我当前的文件夹是C:\ Users \ Documents \ Contents(添加到Matlab路径的路径),“which('Company.m')”表示找不到文件,但如果我当前的文件夹是C:\ Users *** \ Documents \ Contents \ +内容,然后它将知道位置。
这是为什么?我认为'which'命令递归搜索所有子目录?无论如何都要检索'Company.m'的路径名,而不必专门找到该文件夹?
答案 0 :(得分: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