📜  MATLAB匿名函数

📅  最后修改于: 2021-01-07 02:28:46             🧑  作者: Mango

匿名函数

匿名函数是简单的(单行)用户定义函数,无需创建单独的函数文件(M文件)即可定义。可以在命令窗口中,脚本文件中或用户定义的函数定义匿名函数。

通过键入以下命令来生成匿名函数:

其中f是函数句柄。输入列表可以包含一个变量或多个用逗号分隔的变量。创建函数,我们可以将其与它的句柄一起使用以评估函数或将其作为参数传递给其他函数。

例如,创建一个匿名函数来求值并返回圆的面积:

>> cirarea = @ (radius) pi * radius .ˆ 2;

该函数处理的变量名是cirarea。有一个输入参数“半径”。函数的主体为表达式pi * radius。2。使用。数组函数,以便可以将半径向量传递给函数。

然后使用句柄并向其传递参数来调用函数。使用函数处理函数调用看起来就像使用函数名称的函数调用。

>> cirarea(4)
ans =
       50.2655
>> cirarea(1:4)
ans =
         3.1416   12.5664   28.2743   50.2655

可以使用类函数找到cirarea的类型:

>> class(cirarea)
ans =
         function_handle

与代码文件中保存的函数不同,如果没有参数传递给匿名函数,则括号必须在函数定义和函数调用中。例如,以下是匿名函数,该函数print带有两个小数位的随机实数,以及对该函数的调用:

>> prtran = @ () fprintf('%.2f\n', rand);
 >> prtran()
 0.95

键入函数句柄的名称将显示其内容,即函数定义。

>> prtran
prtran = 
@ () fprintf('%.2f\n',rand)

匿名函数可以存储到MAT文件中,然后可以在需要时加载。

>> cirarea = @ (radius) pi * radius .ˆ 2;
 >> save anonfns cirarea
>> clear
>> load anonfns
>> who
Your variables are:
cirarea 
>> cirarea
cirarea = 
@ (radius) pi * radius .ˆ 2

自定义匿名功能

具有一个自变量的匿名函数的示例:

函数: ”匿名函数”可以通过以下命令在命令窗口中将其定义为x作为标量的匿名函数:

>> FA= @ (x) exp(x^2)/sqrt(x^2+5)
FA =
            @(x)exp(x^2)/sqrt(x^2+5)

如果最后没有键入分号,则MATLAB将显示函数。然后,该函数可用于x的不同值:

>> FA(2)
ans =
         18.1994
>> z = FA(3)
z =
        2.1656e+003

如果预期x是一个数组,并且为每个元素计算了函数,则必须修改该函数以进行逐元素计算。

>> FA = @ (x) exp(x.^2)./sqrt(x.^2+5)
FA =
         @(x)exp(x.^2)./sqrt(x.^2+5)
> > FA ([ 1 0 . 5 2])    
ans =
           1.1097     0.5604    18.1994

具有各种自变量的匿名函数的示例:

函数f(x,y)= 2x 2 -4xy + y 2可以通过以下方式定义为匿名函数:

>> HA = @ (x, y) 2*x^2 - 4*x*y + y^2
HA = 
              @ (x, y) 2*x^2 - 4*x*y + y^2

然后,匿名函数可用于x和y的特定值。例如,键入HA(2,3)给出:

>> HA (2,3)
ans =
         -7

参数化匿名函数

工作空间中的变量可以在匿名函数的定义中使用。这称为参数化。例如,要在匿名函数使用常量c = 2:

>> c = 2;
>> f = @(x) c*x
f = 
    @(x)c*x
>> f(3)
ans =
         6

f(3)使用变量c作为自变量与提供的x相乘。请注意,如果此时将c的值设置为其他值,则调用f(3) ,结果将不会有所不同。 c的值是创建匿名函数:

>> c = 2;
>> f = @(x) c*x;
>> f(3)
ans =
     6
>> c = 3;
>> f(3)
ans =
        6