列出调用环境

时间:2016-05-29 10:27:13

标签: matlab

我在.m文件中定义了如下所示的函数:

function main_fn()
...
end

function sub_fn1()
...
end

function sub_fn2()
....
end
...

function sub_fnN()
...
end

即。标准结构,首先是main函数,然后是main函数在被调用时可以访问的子函数。

我知道你可以在函数调用环境中使用whos来返回存储在函数调用堆栈中的变量。我想检索函数文件中定义的子函数,并将它们作为函数句柄的单元格数组返回。

这可能吗?

编辑: @ nirvana-msu的答案使我的原始请求成为可能。但是,现在我发现在结构中存储这些函数更方便,因此我可以通过名称引用它们:

例如:

fcn = 
    struct('sub_fn1', @sub_fn1, ...
           'sub_fn2', @sub_fn2, ...
           ...
           )

编辑2: 只需将答案中获得的单元格数组转换为结构,只需使用func2str

即可
fcns = cell2struct(fncs, cellfun(@func2str, fncs, 'uni', 0));

1 个答案:

答案 0 :(得分:3)

使用localfunctions - 在R2013b中引入:

function main_fn()
    fcns = localfunctions();
end

function sub_fn1()
end

function sub_fn2()
end

function sub_fnN()
end

它将函数句柄的单元格数组返回到文件中的所有本地函数:

fcns = 
    @sub_fn1
    @sub_fn2
    @sub_fnN