I'm trying to write a function that is gets two arrays and the name of another function as arguments.
e.g.
main.m: x=[0 0.2 0.4 0.6 0.8 1.0]; y=[0 0.2 0.4 0.6 0.8 1.0]; func2(x,y,'func2eq') func 2.m : function t =func2(x, y, z, 'func') //"unexpected matlab expression" error message here t= func(x,y,z); func2eq.m: function z= func2eq(x,y) z= x + sin(pi * x)* exp(y);
Matlab tells gives me the above error message. I've never passed a function name as an argument before. Where am I going wrong?
Because functions are objects we can pass them as arguments to other functions. Functions that can accept other functions as arguments are also called higher-order functions.
You can use function handles as input arguments to other functions, which are called function functions . These functions evaluate mathematical expressions over a range of values. Typical function functions include integral , quad2d , fzero , and fminbnd .
An argument default value can be any constant or expression that satisfies the size, class, and validation function requirements. Specifying a default value in an argument declaration makes the argument optional. MATLAB uses the default value when the argument is not included in the function call.
You could also use function handles rather than strings, like so:
main.m
:
... func2(x, y, @func2eq); % The "@" operator creates a "function handle"
This simplifies func2.m
:
function t = func2(x, y, fcnHandle) t = fcnHandle(x, y); end
For more info, see the documentation on function handles
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With