文档

创建功能处理

您可以创建功能句柄命名和匿名函数。您可以存储多个函数处理数组中,并保存并加载它们,就像任何其他变量。

什么是函数处理?

函数句柄是一个MATLAB®数据类型,其存储的关联的函数。间接调用一个函数,您可以调用该函数,无论你来自哪里,调用它的。函数处理的典型用途包括:

  • 通过一个功能到另一个功能(通常称为功能功能)。例如,传递函数,以集成和优化功能,如积分fzero

  • 指定回调函数。例如,一个回调响应UI事件或与数据采集硬件交互。

  • 构建句柄定义的函数内联,而不是存储在一个程序文件(匿名函数)。

  • 从主功能外本地通话功能。

如果一个变量可以看到,H,是使用函数手柄ISA(H, 'function_handle')

创建函数处理

要为函数创建一个手柄,用函数名称前面@标志。举例来说,如果你有一个函数调用MyFunction的,创建一个名为手柄F如下:

F = @myfunction;

你叫使用手柄可以直接调用该函数相同方式的功能。例如,假设你有一个函数命名computeSquare, 定义为:

功能Y = computeSquare(X)Y = X ^ 2。结束

创建一个句柄,并调用函数来计算四方形。

F = @computeSquare;一个= 4;B = F(A)
B = 16

如果该功能不需要任何投入,那么你可以调用与空括号,如功能

H = @ones;A = H()
a = 1时

如果没有括号,分配创建另一个函数句柄。

A = H
A = @ones

函数处理是可以传递给其他函数的变量。例如,计算的积分X2在范围[0,1]。

Q =积分(F,0,1);

函数处理存储他们的绝对路径,所以当你有一个有效的句柄,你可以调用从任何位置的功能。您不必创建手柄,只有函数名时,指定功能的路径。

创建句柄功能时,请注意以下几点:

  • 名称长度 - 函数名的每个部分(包括包和类名称)必须小于指定由数namelengthmax。否则,MATLAB截断名称的后半部分。

  • 范围 - 该功能必须在范围在创建手柄的时间。因此,该功能必须在MATLAB的路径或当前文件夹。或者,手柄到本地或嵌套函数,该函数必须在当前文件。

  • 优先级 - 当有多个函数具有相同的名称,MATLAB使用相同的优先级规则来定义函数处理,因为它确实给调用函数。欲了解更多信息,请参阅功能优先顺序

  • 超载 - 如果你函数的类,它是不是一个根本的MATLAB类指定重载函数,该函数不与它的构造与时间的函数句柄相关联。相反,MATLAB考虑的输入参数和评价的时间决定了实施的呼叫。

匿名函数

您可以创建句柄匿名函数。一位不愿透露姓名的功能是不需要的程序文件一行基于表达式的MATLAB功能。通过定义函数的主体构造的句柄匿名函数,anonymous_function,并以逗号分隔的输入参数列表匿名函数,arglist中。语法是:

H = @(arglist中anonymous_function

例如,创建一个手柄,SQR,以计算某个数的平方,并利用其手柄调用匿名函数匿名函数。

SQR = @(n)的N ^ 2。X = SQR(3)
X = 9

欲了解更多信息,请参阅匿名函数

函数处理数组

您可以通过收集它们到细胞或结构阵列创建函数处理的阵列。例如,使用一个单元阵列:

C = {@sin,@cos,@tan};13 C {2}(PI)
ANS = -1

或者使用结构数组:

S.A = @sin;S.B = @cos;皮下= @tan;S.A(PI / 2)
ANS = 1

保存和加载函数处理

您可以在MATLAB,保存和加载函数处理,就像任何其他变量。换句话说,使用保存加载功能。如果保存功能手柄,MATLAB不保存路径信息。如果您加载的功能句柄,函数文件不再在路径上存在,手柄是无效的。如果因为你创建的句柄的文件位置或文件名称已更改发生无效句柄。如果句柄无效,MATLAB可能当你加载的文件显示警告。当你调用一个无效的句柄,MATLAB发出错误。

也可以看看

|||

相关的例子

更多关于

是这个主题有帮助吗?