Function handles can give you access to functions you might not be able to execute. For instance, with a handle you can call a function even if it is no longer on your MATLAB® path. You can also call a local function from outside of the file that defines that function.
The syntax for calling a function using a function handle is
the same as that used when calling the function directly. For example,
if you call function
myFun like this:
[out1, out2, ...] = myFun(in1, in2, ...);
then you would call it using a handle in the same way, but using the handle name instead:
fHandle = @myFun; [out1, out2, ...] = fHandle(in1, in2, ...);
There is one small difference. If the function being called takes no input arguments, then you must call the function with empty parentheses placed after the handle name. If you use only the handle name, MATLAB just identifies the name of the function:
% This identifies the handle. % This invokes the function. fHandle = @computer; fHandle = @computer; fHandle fHandle() ans = ans = @computer PCWIN
The example below returns multiple values from a call to an anonymous function.
Create anonymous function
f that locates the nonzero
elements of an array, and returns the row, column, and value of each
element in variables
f = @(X)find(X);
Call the function on matrix
m using the function
f. Because the function uses the MATLAB
find function which returns up to three
outputs, you can specify from 0 to 3 outputs in the call:
m = [3 2 0; -5 0 7; 0 0 1] m = 3 2 0 -5 0 7 0 0 1 [row col val] = f(m); val val = 3 -5 2 7 1
As stated previously, you can use function handles to call a
function that may otherwise be hidden or out of scope. This example
getHandle returns a function handle
a caller that is outside of the file:
function fHandle = getHandle fHandle = @subFun; function res = subFun(t1, t2, varargin); ...
getHandle to obtain a function handle
with which to invoke the local function. You can now call the local
function as you would any function that is in scope:
f1 = getHandle; result = f1(startTime, endTime, procedure);
Function handles can be particularly useful in optimization work. If you have the MathWorks® Optimization Toolbox™ installed, click on any of the links below to find information and examples on this topic:
Passing Extra Parameters — Calling objective or constraint functions that have parameters in addition to the independent variable.
Anonymous Function Objectives — Use function handles in writing simple objective functions.
Nonlinear Curve Fitting with lsqcurvefit —
An example using
lsqcurvefit, which takes two
inputs for the objective.