您可以创建功能句柄到命名和匿名函数。您可以在数组中存储多个功能句柄,并保存并加载它们,如您的任何其他变量。
函数句柄是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发出错误。
Func2str.
|function_handle.
|职能
|isa.
|str2func.