matlab匿名函数函数句柄.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
matlab匿名函数函数句柄

matlab?匿名函数??函数句柄?(2012-05-11 11:35:05)转载▼标签:?教育分类:?study与matlab一、函数句柄所谓函数句柄,个人认为可以将其理解成一个函数的代号,就像一个人的名字。这样在调用时可以调用函数句柄而不用调用该函数。语法如下:变量名= @ 函数名;@的作用就是将一个函数的函数句柄赋值给等号左边的变量。在调用函数时就可以调用该句柄,可以实现同样的功能。例:首先我们写一个求均值的函数:function y=average(x)y=mymean(x);function a=mymean(v)a=sum(v)/length(v);定义一个数组z:z=[1,2,3,4,5,6,7]; average(z)ans =?????4?handle=@averagehandle =????@average?ave=@averageave =????@average ave(z)ans =?????4?二、匿名函数?????相当于C语言中的函数指针(入口地址),只不过句柄就用一个唯一的常整数来指出匿名函数是函数句柄的一种特殊用法,这里所得到的函数句柄变量不指向特定的函数(即不指向函数M文件中的函数名),而是指向一个函数表达式(具体表达式)。语法如下:变量名=@(输入参数列表)运算表达式;例子:为了说明问题,我们用简单的两个数相加,?sum=@(x,y)x+ysum =????@(x,y)x+y sum(2,3)ans =?????5%%%%%%%%%%%%%%%%%%%比如定义f(x)=x^2,可以写为f=@(x)(x.^2)其中@(x)(x.^2)就是匿名函数,第一个括号里面是自变量,第二个括号里面是表达式,@是函数指针f=@(x)(x.^2)表示将匿名函数@(x)(x.^2)赋值给f,于是f就表示该函数。于是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等定义匿名函数时也可以调用别的匿名函数,比如f1=@(x,y)(x.^2+y.^2)定义了函数x^2+y^2f2=@(t)(f1(t,2))定义了函数t^2+4f3=@(x)(f1(x(1),x(2)))定义了函数x(1)^2+x(2)^2使用匿名函数时一定要注意函数本身的参数形式,如f1(2,3)表示2^2+3^2f2(3)=3表示3^2+4f3([1,2])表示1^2+2^2?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?三、内联函数内联函数和普通的函数句柄,准确说跟匿名函数比较类似,可以通过一个函数表达式近而得到该函数。语法格式如下:1 变量名=inline(表达式);2?变量名=inline(函数表达式, 变量名1,变量名2, ... ,变量名n);(推荐)例如:1 a=x+ya =x+y f=inline(a)f =?????Inline function:?????f(x,y) = x+y f(2,3)ans =?????52 f=inline(x+y,x,y)f =?????Inline function:?????f(x,y) = x+y f(2,3)ans =?????5??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%创建句柄函数?str2func函数才支持生成匿名函数句柄 syms xf = diff(sin(x)*exp(sqrt(x)),2)g =?str2func([@(x) vectorize(char(f))])f1 = quad(g,1,2)/thread-93472-1-1.html?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sqr=@(x)x.^2;可以将它传递到其他函数的参数列表中。下面的代码将sqr匿名函数传递给matlab函数quad来计算它从0到1的积分:?[c-sharp]?view plaincopyprint??quad(sqr,0,1)??ans?=??????0.3333??/dfd1r/article/details/6279125?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%匿名函数在定义过程中可以调用任何Matlab函数(包括用户自定义的函数),也可以使用当时Matlab工作区中存在的任何变量。例如,下例中的匿名函数b_humpsab在定义时就是用了Matlab工作区中的变量a和b:?a?=?-.3;b=-.9;?b_humpsab?=?@?(x)?1./((x+a).^2+0

您可能关注的文档

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档