matlab 设置为匿名函数,MATLAB匿名函数

本文概述

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

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

matlab-anonymous-function.png

其中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

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

>> 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

自定义匿名功能

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

功能:

matlab-anonymous-function2.png

可以通过以下方式在命令窗口中将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)= 2×2-4xy + y2可以通过以下方式定义为匿名函数:

>> 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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值