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

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

《Matlab中使用匿名函数和内嵌函数处理多变量传递问题》由会员分享,可在线阅读,更多相关《Matlab中使用匿名函数和内嵌函数处理多变量传递问题(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 和 ne

2、sted function 的使用。例:对任意二次多项式 ax2+bx+c 进行数值积分(此处显然可以解析得到,此例使用 anonymous function 做演示)解:(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,c end % 结束内嵌函数 poly2 end % 结束母函数 intpoly2 保存后执行,同样效果。可见 nested function 只是将主调函数和被调函数封装到了一起以共享主调函数的变量。注意:一般函数不需要 end,当出现 nested function 时,主调函数和被调函数都必须有 end 来结束!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号