假设我有:

+MyPackage/+MySubPackage2/some_function.m

当执行时,如何从这个'MyPackage.MySubPackage2.some_function'中生成字符串some_function.m
mfilename()dbstack()what()等。都只需给出'some_function'
meta.package.fromName需要我们要查找的字符串作为其输入
分析完整路径(mfilename('fullpath'))或meta.package.getAllPackages()等似乎是唯一的方法。。。
似乎在amfilename('class')中调用aclass给出了正确的答案,但是对于普通函数没有等价的方法。。。
……还是在那里感觉好像我错过了一些明显的。。。

最佳答案

如果可以导入包含的包(例如p1/p2),则:

function outputArg1 = some_function()
import p1.p2.*
t = @some_function;
func2str(t)
%ans  = 'p1.p2.some_function'
outputArg1 = ...;
end

也可以使用this answer中的方法(可能会进行一些更改)来自动化导入过程。

10-08 17:40