Matlab - 在包内的路径上定位文件

时间:2012-05-24 21:35:52

标签: matlab

尝试(不成功)使用'which'来查找包中的.m文件。例如,当Company.m在+ Contents文件夹中时,调用“which('Company.m')”。

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

这是为什么?我认为'which'命令递归搜索所有子目录?无论如何都要检索'Company.m'的路径名,而不必专门找到该文件夹​​?

1 个答案:

答案 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