function_handle - Handle to function - MATLAB (original) (raw)

Main Content

Description

A function handle is a MATLAB® data type that represents a function. A typical use of function handles is to pass a function to another function. For example, you can use function handles as input arguments to functions that evaluate mathematical expressions over a range of values. Other typical uses of function handles include:

Creation

Create a function handle using the @ operator. Function handles can represent either named or anonymous functions.

Examples

collapse all

In a file in your current folder, create a function named cubicPoly that accepts an input to evaluate the cubic polynomial x3+x2+x+1.

function y = cubicPoly(x) y = x.^3 + x.^2 + x + 1; end

To find the integral of cubicPoly from 0 to 1, pass a handle to the cubicPoly function to integral.

q = integral(@cubicPoly,0,1)

Create the handle f to an anonymous function that evaluates the cubic polynomial x3+x2+x+1 for a given value of x.

f = @(x) x.^3 + x.^2 + x + 1;

To find the integral of the anonymous function from 0 to 1, pass its handle to integral.

Extended Capabilities

Version History

Introduced before R2006a

expand all

Invoking handles to named functions that are not nested shows improved performance. Invoking such function handles no longer results in an overhead compared to calling functions directly. For example, in a file named myFun.m in your current folder, create the myFun function.

function y = myFun(x) y = x; end

In a file named timingTest.m in your current folder, create a function that invokes a handle to myFun. ThetimingTest function is about 40x faster than in the previous release.

function t = timingTest f = @myFun; n = 1e7; tic for i = 1:n out = f(3); end t = toc; end

The approximate execution times are:

R2022b: 4.4 s

R2023a: 0.11 s

The code was timed on a Windows® 10, Intel® Xeon® CPU E5-1650 v4 @ 3.60 GHz test system by calling thetimingTest function.