Programming |

A *fun**ction handle* is a MATLAB value that provides a means of calling a function indirectly. You can pass function handles in calls to other functions (often called *function functions*). You can also store function handles in data structures for later use (for example, as Handle Graphics callbacks).

**Constructing a Function Handle**

Use the following syntax to construct a function handle, preceding the name of the function with an `@`

sign. Use only the function *name*, with no path information, after the `@`

sign:

MATLAB maps the handle to the function you specify and saves this mapping information in the handle. If there is more than one function with this name, MATLAB maps to the one function source it would dispatch to if you were actually calling the function.

A function handle retains that same mapping even if its corresponding function goes out of scope. For example, if, after creating the handle, you change the MATLAB path so that a different function of the same name now takes precedence, invoking the function handle still executes the code to which the handle was originally mapped.

**Handles to Anonymous Functions**

Another way to construct a function handle is to create an anonymous function. For example,

creates an anonymous function that computes the square of its input argument `x`

. The variable `sqr`

contains a handle to the anonymous function. See Anonymous Functions for more information.

**Arrays of Function Handles**

To store function handles in an array, use a cell array:

**Invalid or Obsolete Function Handles**

If you create a handle to a function that is not on the MATLAB path, or if you `load`

a handle to a function that is no longer on the path, MATLAB catches the error only when the handle is invoked. You can assign an invalid handle and use it in such operations as `func2str`

. MATLAB catches and reports an error only when you attempt to use it in a runtime operation.

**Calling a Function Using Its Handle**

To execute a function associated with a function handle, use the syntax shown here, treating the function handle `fhandle`

as if it were a function name:

If the function being called takes no input arguments, then use empty parentheses after the function handle name:

**Simple Function Handle Example**

The following example calls a function `plotFHandle`

, passing it a handle for the MATLAB `sin`

function. `plotFHandle`

then calls the `plot`

function, passing it some data and the function handle to `sin`

. The plot function calls the function associated with the handle to compute its *y*-axis values:

Call `plotFhandle`

with a handle to the `sin`

function and the value shown below:

**Functions That Operate on Function Handles**

MATLAB provides the following functions for working with function handles. See the reference pages for these functions for more information.

Function |
Description |

`functions` |
Return information describing a function handle. |

`func2str` |
Construct a function name string from a function handle. |

`str2func` |
Construct a function handle from a function name string. |

`save` |
Save a function handle from the current workspace to a MAT-file. |

`load` |
Load a function handle from a MAT-file into the current workspace. |

`isa` |
Determine if a variable contains a function handle. |

`isequal` |
Determine if two function handles are handles to the same function. |

Returning Output Arguments | Additional Information on Function Handles |

© 1994-2005 The MathWorks, Inc.