在MATLAB中将函数名称作为参数传递

时间:2014-04-20 19:18:42

标签: matlab function arguments handle function-handle

我知道这个问题已经被问及并回答here但我无法使其发挥作用。

我有一个简单的函数f1:

function out = f1(x)
out = x^2 + 5;
end

我希望有一个"代表"将函数名称作为输入的函数。下面你可以看到我的2个试验:

% function out = delegate_function(the_input , func_handle)
% out = func2(the_input, func_handle);
% end

function out = delegate_function(the_input , funcname)
thefunc = str2func(funcname);
out = thefunc(the_input);
end

当我在命令窗口中调用它时,它们都会出现相同的错误:

delegate_function(2 , f1); % I want ans = 9

Error using f1 (line 2)
Not enough input arguments.

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

要使上述版本正常工作,您必须传递函数的名称,即

delegate_function(2 , `f1`);

我强烈建议改为使用function handle

function out = delegate_function(the_input , func_handle)
out = func_handle(the_input);
end

然后你必须使用以下方式致电delegate_function

delegate_function(2 , @f1);