主要内容

创建功能句柄

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

什么是函数处理?

函数句柄是matlab®存储与函数关联的数据类型。间接调用函数使您可以调用函数,而不管您从中调用它的位置。功能手柄的典型用途包括:

  • 将函数传递给另一个函数(经常调用功能功能)。例如,将函数传递给集成和优化功能,例如不可缺少的Fzero.

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

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

  • 从主函数外调用本地函数。

您可以看到一个变量,H,是使用功能处理isa.(h,'function_handle')

创建功能处理

要为函数创建句柄,请使用函数名称之前@符号。例如,如果您有函数调用myfunction.,创建命名句柄F如下:

f = @myfunction;

您使用同样的方式调用函数,即直接调用函数。例如,假设您有一个名为的函数计算quare., 定义为:

功能Y = Computesquare(x)y = x。^ 2;结尾

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

f = @computesquare;a = 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};c {2}(pi)
ans = -1

或使用结构阵列:

s.a = @sin;S.B = @COS;S.C = @Tan;S.A(PI / 2)
ans = 1

保存和加载功能处理

您可以在MATLAB中保存和加载函数句柄,因为您可以使用其他变量。换句话说,使用保存加载职能。如果保存函数句柄,Matlab不保存路径信息。如果加载函数句柄,则路径上不再存在函数文件,则句柄无效。如果自创建句柄以来,文件位置或文件名已更改,则会发生无效句柄。如果句柄无效,则在加载文件时,MATLAB可能会显示警告。当您调用无效句柄时,Matlab发出错误。

也可以看看

||||

相关例子

更多关于