我知道这里已经提出并回答了这个问题,但我无法解决它。
我有一个简单的函数f1:
function out = f1(x)
out = x^2 + 5;
end
我想要一个以函数名称为输入的"delegate"函数。下面你可以看到我的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.
我做错了什么?
谢谢你的帮助!
要使上面的版本工作,您必须传递函数的名称,即
delegate_function(2 , `f1`);
我强烈建议使用函数句柄:
function out = delegate_function(the_input , func_handle)
out = func_handle(the_input);
end
然后您必须使用呼叫delegate_function
delegate_function(2 , @f1);