我有一个在m文件中定义的local function。例如:从命令行调用本地函数
% begining of public_function.m file
function fh = public_function()
%
% do some computation...
fh = @local_function; % return function handle to local function defined below
function y = local_function(x)
%
% a local function inside public_function.m file
%
% some manipulation on x
y = x;
% end of public_function.m file NOTE THAT local_function is NOT nested
现在,我想调用命令行local_function
(而不是从public_function
)。我能做到这一点利用public_function
返回的功能句柄:
>> fh = public_function(); % got handle to local_function
>> y = fh(x); % calling the local function from command line :-)
我的问题:
是否有任何其他方式(除了明确地传递给函数句柄)来调用命令行的本地函数(或其他m文件/功能)?
更确切地说,我想要一个方法来访问文件中的任何本地函数(前提是我知道它的名字)。所以,如果我有public_function.m
文件(和函数)和我知道local_function
是该文件的本地,有没有办法从命令行访问local_function
?
您可以通过子功能的名称作为主函数的参数。查看第二个示例:http://www.mathworks.de/support/solutions/en/data/1-19LN6/?solution=1-19LN6 – 2013-03-17 15:11:20
您是否在matlab文件交换中检查了mklib?它会自动创建句柄到您列出的文件中的任何本地函数作为函数参数:http://www.mathworks.de/matlabcentral/fileexchange/7597-mklib-a-pedestrian-function-library-loader-generator – 2013-03-18 15:17:40
更好的问题这就是为什么如果您迫切需要从m文件之外调用该函数,那么您将该函数作为本地函数。使一些东西成为本地功能的想法是限制它的范围。也许你应该把它放在自己的m文件中,或者把它变成一个私有函数。我建议看看[这个问题](http://stackoverflow.com/q/3569933/52738)了解更多信息。 – gnovice 2013-10-16 18:36:14