我在.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));
答案 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