how to put function as an input to another function?

3 次查看(过去 30 天)
I save a function call "nonliner" in matlab and I want to call this function as an input like
function [Ar,Br] = algopsols(nonliner,A,B); it give me an error
Is there any solution?
Thank you

回答(1 个)

Star Strider
Star Strider 2016-1-30
If you want to use it in the function, you do not have to pass it as an argument. Just include a call to it as part of the function code:
function [Ar,Br] = algopsols(A,B)
returned_values = nonliner( ... argument list ...);
. . . CODE . . .
end
If you want to pass it as an argument to your function, you have to pass it as a function handle (using an ‘@’ sign):
[Ar,Br] = algopsols(@nonliner,A,B)
  4 个评论
Ahmed
Ahmed 2016-1-30
Error using algopsonls Too many input arguments.
Error in run_non_pso (line 15) [Ar,Br] = algopsonls(@nonliner,A,B)
Star Strider
Star Strider 2016-1-30
Well, if you want to pass the function as an input, you have to allow for it in the argument list:
function [Ar,Br] = algopsols(funname,A,B)
. . . CODE . . .
returned_values = funname( ... argument list ...);
. . . CODE . . .
end
then call it as:
[Ar,Br] = algopsols(@nonliner,A,B);
A simple illustration:
deriv = @(funname,x) (funname(x+1E-8) - funname(x))/1E-8; % Take A Simple Numerical Derivative
t = linspace(-pi, pi); % Time Vector
dsint_dt = deriv(@sin,t); % Derivative Of ‘sin(t)’
figure(1)
plot(t, sin(t), t, dsint_dt)
grid

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by