主要内容

创建函数处理

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

一个函数处理是什么?

一个函数处理是MATLAB®数据类型存储一个函数的协会。间接调用函数使您能够调用函数不管你叫它。函数处理的典型应用包括:

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

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

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

  • 调用本地函数以外的主要功能。

你可以看到,如果一个变量,h,是一个函数处理使用isa(h, function_handle)

创建函数处理

创建一个处理函数,在函数名前面加上一个@的迹象。例如,如果您有一个函数调用myfunction,创建一个处理命名f如下:

f = @myfunction;

你调用一个函数使用处理相同的方式直接调用这个函数。例如,假设您有一个函数命名computeSquare,定义为:

函数y = computeSquare (x) y = x ^ 2;结束

创建一个处理并调用该函数来计算4的平方。

f = @computeSquare;= 4;b = f ()
b = 16

如果函数不需要任何输入,然后你就可以调用这个函数与空括号,如

h = @ones;一个= h ()
一个= 1

没有括号,赋值创建另一个函数处理。

一个= h
一个= @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}(π)
ans = 1

或者使用结构数组:

年代。一个= @sin;年代。b = @cos;年代。c = @tan;s.a.(π/ 2)
ans = 1

保存和加载函数处理

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

另请参阅

||||

相关的例子

更多关于