Matlab中使用匿名函数和内嵌函数处理多变量传递问题.doc

上传人:hw****26 文档编号:3219896 上传时间:2019-05-26 格式:DOC 页数:2 大小:24KB
下载 相关 举报
Matlab中使用匿名函数和内嵌函数处理多变量传递问题.doc_第1页
第1页 / 共2页
Matlab中使用匿名函数和内嵌函数处理多变量传递问题.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Matlab 中使用匿名函数和内嵌函数处理多变量传递问题(Matlab 7.0 以上) :问题:有一个多变量函数 f(abcx),现需要分别在 a=a0b=b0c=c0 和 a=a1b=b1c=c1 的条件下对f(abcx)进行某一操作。此类问题常在数值积分时出现。解决方案:1 使用全局变量 可在主调函数和被调函数中分别将 a,b,c 声明为全局变量 (global a b c),这时 f 通过全局变量传递 abc, 定义时可以只有一个参数 x。2 使用 anonymous function3 使用 nested function 下面举例说明 anonymous function 和 nes

2、ted function 的使用。例:对任意二次多项式 ax2+bx+c 进行数值积分(此处显然可以解析得到,此例使用anonymousfunction 做演示)解:(1)使用匿名函数编写文件 intpoly2.m如下 function y_int=intpoly2(a,b,c)y_int=quad(x)(poly2(a,b,c,x), 0,1); %此处利用 matlab 内部函%数 quad(fun, x0,xt)进行积分,%被积函数 fun 我们使用匿名函%数(x)(poly2(a,b,c,x)以便%将自变量限制为 x. function y=poly2(ai,bi,ci,x) %此处定

3、义一个多变量的子函数 poly2( a,b,c,x)y=ai.*x.2+bi.*x+ci; %此处使用矩阵元素运算(.* 和.)等便于%被矩阵化的内部函数调用,且提高程序效率执行:保存该文件并将 matlab 切换至该文件目录下,命令行输入 intpoly2(1,2,3), 便给出积分结果 ans=4.33(2)使用 nested function编写函数保存为 intnest.m, 内容如下function y_int=intnest(a,b,c)y_int=quad(poly2, 0,1); %此处利用 matlab 内部函%数 quad(fun, x0,xt)进行积分,%被积函数 fun 我们使用内嵌函%数 poly2(x)的句柄poly2 function y=poly2(x) %此处定义一个内嵌函数 poly2( a,b,c,x) y=a.*x.2+b.*x+c; %直接调用母函数中的变量 a,b,cend % 结束内嵌函数 poly2end % 结束母函数 intpoly2 保存后执行,同样效果。可见 nestedfunction 只是将主调函数和被调函数封装到了一起以共享主调函数的变量。注意:一般函数不需要 end,当出现 nested function 时,主调函数和被调函数都必须有 end 来结束!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。