目录
function_handle函数所表示的是函数的句柄。
说明
函数句柄是一种表示函数的 MATLAB® 数据类型。函数句柄的典型用法是将函数传递给另一个函数。例如,可以将函数句柄用作基于某个值范围计算数学表达式的函数的输入参数。函数句柄的其他典型用法包括:
-
指定回调函数(例如,响应 UI 事件或与数据采集硬件交互的回调)。
-
构造以内联方式定义而非存储在程序文件(匿名函数)中的函数的句柄。
创建对象
使用 @ 运算符创建一个函数句柄。函数句柄可以表示命名函数或匿名函数。
-
命名函数句柄表示现有程序文件中的函数,包括 MATLAB 中提供的函数以及使用 function 关键字创建的函数。要创建命名函数的句柄,请在函数名称前加上 @。
例如,创建 sin 函数的句柄,然后使用 fminbnd 求得使 sin(x) 在 0 到 2π 范围内最小的 x 的值:
f = @sin; m = fminbnd(f,0,2*pi);
-
匿名函数句柄(通常称为匿名函数)表示返回一个输出的单个内联可执行表达式。要定义匿名函数,请在 @ 运算符后紧接着用括号将输入参数名称括起来,然后指定可执行表达式。
例如,创建用于计算表达式 x2 − y2 的匿名函数的句柄:
f = @(x,y) (x.^2 - y.^2);
匿名函数可以接受多个输入,但只返回一个输出。
示例
命名函数求积分
在当前文件夹中的一个文件中,创建一个名为 cubicPoly 的函数,该函数接受一个输入来计算三次多项式
function y = cubicPoly(x)
y = x.^3 + x.^2 + x + 1;
end
要求 cubicPoly 从 0 到 1 的积分,请将 cubicPoly 函数的句柄传递给 integral。
q = integral(@cubicPoly,0,1)
q = 2.0833
匿名函数求积分
创建一个匿名函数的句柄 f,该函数对给定的 x 值计算三次多项式 x^3+x^2+x+1。
f = @(x) x.^3 + x.^2 + x + 1;
要求该匿名函数从 0 到 1 的积分,请将其句柄传递给 integral。
q = integral(f,0,1)
q = 2.0833