收藏 分销(赏)

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

上传人:pc****0 文档编号:7183613 上传时间:2024-12-27 格式:DOC 页数:2 大小:24KB 下载积分:10 金币
下载 相关 举报
Matlab中使用匿名函数和内嵌函数处理多变量传递问题.doc_第1页
第1页 / 共2页
Matlab中使用匿名函数和内嵌函数处理多变量传递问题.doc_第2页
第2页 / 共2页
本文档共2页,全文阅读请下载到手机保存,查看更方便
资源描述
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 function 3. 使用 nested function 下面举例说明anonymous function和nested 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) %此处定义一个多变量的子函数 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 来结束!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服