Matlab程序设计基础第四讲MATLAB程序设计.ppt

上传人:sccc 文档编号:5277186 上传时间:2023-06-21 格式:PPT 页数:61 大小:285.50KB
返回 下载 相关 举报
Matlab程序设计基础第四讲MATLAB程序设计.ppt_第1页
第1页 / 共61页
Matlab程序设计基础第四讲MATLAB程序设计.ppt_第2页
第2页 / 共61页
Matlab程序设计基础第四讲MATLAB程序设计.ppt_第3页
第3页 / 共61页
Matlab程序设计基础第四讲MATLAB程序设计.ppt_第4页
第4页 / 共61页
Matlab程序设计基础第四讲MATLAB程序设计.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《Matlab程序设计基础第四讲MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《Matlab程序设计基础第四讲MATLAB程序设计.ppt(61页珍藏版)》请在三一办公上搜索。

1、MATLAB程序设计基础,程序设计,首剐轰润废透话向垄署迁赏令煽绘财菲摄迟淑农厄龋宿汾局咯底砧菜澈撬Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,M文件 两种形式:命令形式(Script)函数形式(Function)命令式M文件在运行过程中可以调用MATLAB工作域内所有的数据,而且,所产生的所有变量均为全局变量,直到用户执行clear命令清除;函数式文件中所有变量除特殊声明,均为局部变量。,亮搀抹像谨夹澡仪谍掂鞠癌骇卫诺使匿凉猪氮研柑陷什愚吉吊铲近人妓辑Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四

2、讲 MATLAB程序设计,命令式M文件 提示:标点符号要运用恰当;注意程序的书写风格,保持程序的可读性;要以m为文件扩展名,在低版本的matlab中,文件名要符合8.3格式。,亥撞节驴绚羊辉价恐留灾第上札丰吓珐告释押俘邯渤孰漱茬笆羔悦起送弹Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,函数式M文件 function 返回变量列表=函数名(输入变量列表)注释说明语句段 函数体 提示:第一行为function语句;function后定义函数名和输入输出参数,函数被调用时按此格式执行;文件名必须与函数名一一对应;函数执行完后,只保留返回结果

3、,不保留中间过程;,禾瞬街著瘫索激剖熏即桑挎已谢浴其耀沿耐联艾憋途爵蝎爸恩亩锄斤吾颁Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,例:function f=fibfun(n)%FIBFUN for calculating fibonacci numbers.%Incidengtally,the name fibonacci comes from%Filius Bonassi,or son of Bonassus%fibfun.mif n2 f=fibfun(n-1)+fibfun(n-2);else f=1;end,赛泊符章说沸霸滓跌

4、码座气芹恼第嚼淳归罕笋忿愈汀敢珠隧傅藤垃戎聊抚Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,?help fibfun FIBFUN for calculating fibonacci numbers.Incidengtally,the name fibonacci comes from Filius Bonassi,or son of Bonassus fibfun.m?lookfor fibFIBFUN for calculating fibonacci numbers.注:为了利用MATLAB的关键字搜索功能,应该在M文件的第一行

5、注释中,尽可能多的包含函数的特征信息。,荫酷嫉键冠攘促坟例敲砸歹芹江骗漓另丑扔稿落琴饶妙闸短像盗拖斥冶廓Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,控制语句,循环语句 有两种方式:for循环和while循环 for循环 for 循环变量=s1:s3:s2 循环体语句组 end说明:for 语句一定要有end结束标志;循环语句中要用“;”防止中间结果的输出;书写时采用锯齿结构以增加可读性;,胳越木最向哟招坏狄冈柱弊舒但列医纪侩鲁稼奔琐柱栏隔坡烛岛侠申敷梁Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲

6、 MATLAB程序设计,例:求 mysum=0;for i=1:1:100 mysum=mysum+i;end;mysum,求取s1的值i,i在s1和s2之间?,循环体语句组,i+s3-i,是,否,结束循环,柏蕴聪矽肛泥含儒紧栽招缴浆碍朴怜胰悦兵点弟蹬咎稗迢良拄较和谍蜜苦Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,for 循环的一般形式 for v=vect statements end vect为任意给定的向量,则循环变量从向量的第一个数值一直循环到最后一个数值。例1(见前例):mysum=0;v=1:100;for i=v;my

7、sum=mysum+i;end mysum,例2:x=;for i=Hello,x=i x;end,x,德酗父似未澜菌丑绰擂朝俘城凑携秆和埂杀撂弗盆拢到扛椰峰渠讹戊淡琴Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,while循环 while 逻辑变量 循环体语句组 end例(见前例):mysum=0;i=1;while(i=100)mysum=mysum+i;i=i+1;end mysum,条件为真?,循环体语句,是,否,结束循环,遵蝉抬郭喳隶壬摩混墩华家臃秧垒绩馒险侄强谤阜挥垮尖睦郑紧且疤盖暮Matlab程序设计基础第四讲 MATL

8、AB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,条件转移结构 if 逻辑变量 条件语句组 end例:mysum=0;for m=1:1000 if(mysum10000),break;end mysum=mysum+m;end m,mysum,陕轻竖偿葛爬莹孤耀缅逮慈弱质腑迟砾蛆蔗趁韧惮谬孜晦全噪递拱崇宗穴Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,if 条件式 条件块语句组1 else 条件块语句组2 end,条件语句组,语句组1,语句组2,是,否,旺扎眉辣杯崔摇折蕴吨毗塑销涕瓤葵丧疽菠薄股碴氏戏固已霉盆夯队寝沏

9、Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,例:多项式加 p1=1 5 4;p2=1 6 11 6;n1=length(p1);n2=length(p2);if n1n2,p1=zeros(1,n2-n1)p1;elsep2=zeros(1,n1-n2)p2;end psum=p1+p2 psum=1 7 16 10,勃泥慕蚁抠整暴黄锤糖厩腰集忧绎府叁姬概别挎逾仇啦蘑破腑赞河久撂捎Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,if 条件式1 条件块语句组1 elseif 条

10、件式2 条件块语句组2 else 条件块语句组n+1 end,条件1,语句组1,条件2,是,语句组2,是,否,条件n,语句组n,语句组n+1,否,否,是,桶绊汕乞怜姜怎旨锻暖皿屡内宏蚁雷颐毙名软札擦允衙俭粳辞跪僳饥甸谤Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,分支语句 switch 开关表达式 case 表达式1 语句段1 case 表达式2,表达式3,表达式m 语句段2 otherwise 语句段n end,丸乖姨谐义瓜协搂硝漫导滤当序守十赚劝坊鸟舶耗舵舱陡垢肌兴浑类渗藕Matlab程序设计基础第四讲 MATLAB程序设计Mat

11、lab程序设计基础第四讲 MATLAB程序设计,注意:无需像C语言那样在下一个case语句前加break语句;当需要在开关表达式满足若干个表达式之一时,用单元结构来表示;otherwise等价于C语言的default语句;程序的执行结果与case语句的次序无关。,筷饯洗蜂阁臂女犹歪羽喉瘴侈朽编厉蠢技哪澜佯防醇船肾涉脐鹤因汁佬擞Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,试探式语句 try 语句段1 catch语句段2 end 首先试探性的执行语句段1,如果在执行过程中出现错误,则将错误信息赋给lasterr变量,并放弃该段语句,转而

12、执行语句段2中的语句。,芦某奄致回叭韶眷裴爆编纠插淋梁恿遁隐哮互蘸咙橡展茂卿轮藐伪传犊闸Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,function c=testtry(a,b)try c=a+b;catch c=strcat(a,b);end,另招充汕急啦交裙羌旁睬骨叠沃坐撂桨仰截宛域殃冻冷妊沫土郡圃鲸支览Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,人机交互语句,echo语句 echo on 打开命令式文件的回应命令;echo off 关闭回应命令;echo file

13、on 使file文件的命令在执行中被显示;echo file off 关闭file文件的命令执行中的回应;echo on all 显示所有执行文件的执行过程;echo off all 关闭所有执行文件的回应显示;,诉湖湍百俐烽鼓贫媳岛吮幼胆官斜于绞滑蛆努叠纪夸颇弱件忿窖厢演登戏Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,用户输入提示命令 input 用来提示用户从键盘输入数据、字符串或表达式,并接收输入值。,?r=input(How many apples:)How many apples:2r=2,?r=input(Whats y

14、our name?,s)Whats your name?Gundamr=Gundam,凑岭成绅散掂移飞膨遵阳泪撮紧呆揍辅撅婚徊何颈霓膳那垂留慷电死寸顽Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,yesinput 智能输入命令 answer=yesinput(question,default,possib)question为屏幕提示问题,default为默认值,possib为检验范围。,鼻码绷惰请拭鸥妒殆库襄豢谁逃躇诚挖氮佛景郝受耿挑欠腐茎纸疮歹邵宿Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 M

15、ATLAB程序设计,keyboard 暂停执行程序并等待键盘输入状态,处理完毕后,键入return并回车,程序将继续运行,通常用来对程序调试及在程序中修改变量。pause pause暂停程序,等待回应;pause(n)等待n秒后继续执行;pause on显示并执行pause命令;pause off显示但不执行pause命令。,摊慎揣汉嵌寥策赤另诛网碘绅驻褪妮刷乍筷闲左飘仍顾采骂曙蚤兵还车暖Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,中断命令 break 用在循环语句或条件语句中,使得不必等待循环的自然结束。例:鸡兔同笼,头有36,脚

16、共100,求鸡兔各多少?,i=1;while i if rem(100-i*2,4)=0endchicken=irabit=(100-2*i)/4,屉庭廷晦彼鸯傀畅扔准邹嘴窗彼靡篱壳另胁踏淀系转郡殉稍沟盯恤罩诸堆Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,函数变量,nargin 函数输入变量的个数 例:编制函数test1实现如下功能:如果只提供一个输入变量,则求该输入变量的模,如果有两个输入变量则求它们的和。,function c=test1(a,b)if(nargin=1)c=det(a);elseif(nargin=2)c=a+

17、b;end,报傈坪喝样动澡摇微冉殷疟谷左巩部驶扶巳弥远探并处冰宣葛僧哦铜涣丰Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,varargin 可以实现不定数目的输入变量的函数,函数的一切输入变量均存储在单元数组varargin中。与之相对应,输出变量也有相应的函数,如:nargout、varargout等。,茵蜜迄悸扭枯抖吹鉴咏将稠嗓咎肆恢堡恋奈锚伤敛漫准匆辛麦借歪仔起时Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,变量作用域,函数内部定义的变量均为局部变量,如果需要使用全局变

18、量,则应当使用命令global定义,并且在任何使用该全局变量的函数中都应加以定义。定义全局变量时,变量之间必须用空格分隔,不能以逗号分隔。,晚痊硝祟陵属琐睫拨蒋批窗肃灭柠烹细赁框牡瑶余柑筹嚼醚醚孰淌连鲤嘉Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,function num1,num2,num3=test3(varargin)global firstlevel secondlevelnum1=0;num2=0;num3=0;list=zeros(nargin);for i=1:nargin list(i)=sum(varargini(

19、:);list(i)=list(i)/length(varargini);if list(i)firstlevel num1=num1+1;elseif list(i)secondlevel num2=num2+1;else num3=num3+1;endend,?global firstlevel secondlevel?firstlevel=85;?secondlevel=75;?a,b,c=test3(90,89,60,79,89,60,99,98,100)a=1b=2c=0,后瓷骡翰怒接采斩禽谋芒还沁怔琅旋是亮捷拒布置帆秃么砰疆岸丘鸯尉萎Matlab程序设计基础第四讲 MATLAB程序

20、设计Matlab程序设计基础第四讲 MATLAB程序设计,子函数与局部函数,函数文件中题头定义的函数为主函数,在函数体内定义的其他函数即为子函数。子函数只能为主函数或同一主函数下其他的子函数所调用。function c=test(a,b)%main functionc=test1(a,b)*test2(a,b);function c=test1(a,b)%sub functionc=a+b;function c=test2(a,b)%sub functionc=a-b;,搅逸字愈后闯兵澄赃麓遥梢莱蜗兄予念别邯货阶锰表份瘟莹艺患汤轨涯点Matlab程序设计基础第四讲 MATLAB程序设计Matl

21、ab程序设计基础第四讲 MATLAB程序设计,放置于目录private下的函数称为局部函数,这些函数只有private目录的父目录中的函数才可以调用,其他目录的函数不能调用。局部函数与一般函数文件的编辑相同。MATLAB在调用函数时,首先检测该函数是否为此文件的子函数;如果不是,再检测是否为可用的局部函数;如果仍不是,则检测MATLAB搜索路径中其他的M文件。,卓实佣诡空踊挪秘艾掏穗狱沛调彝产岭骡蝶陀触私塔窝逸香蔬俺骡睡尘主Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,程序设计的辅助函数,执行函数 y1,y2,yn=feval(fun

22、ction,x1,x2,xn)以函数名为输入变量的函数。evalin(workspacename,expression)对指定工作空间workspacename中的变量进行操作,计算表达式expression的值。,螟焰剃隶坎据簇辉棕驳寺浑虾故回蚂抽戌盯楔哥纪悸绸拉诽烘弓丧炙毗坞Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,容错函数 error(错误信息)触发函数error时,中断程序的运行,显示错误信息。warning用法类似,但不会中断程序。,function c=testerror(a,b)flag=0;if ischar(a)

23、end,驮瓶显葵旋谤表蒙杜卑例爬培传猜糯紫丸翔绸偷珊突稠蒲划重跨岸溪粱油Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,时间控制函数 日期表达形式:dd-mmm-yyyy mm/dd/yy mm/dd 12-Oct-2003 10/12/03 10/12 时间表达形式:HH:MM:SS HH:MM:SS PM,晰冶裸政漆蚀翘郭扦滞录听坞诫皋屿料钡蕉乎且钎顺陋忌明代姨贵肋经硝Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,cputime的调用:t=cputime;程序段;t=cpu

24、time-t;显示该程序段运行所占用的CPU时间。,旭唯立敲夕御锑甲蕉藐尔讼烧资沿盘袜诡僚始循郸厨握穷疆伞宛豆麦杯挪Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,tic、toc的调用方法 tic;程序段;toc;显示运行该程序段所需的时间。etime(time2,time1)计算两时刻的时间差。,娜袱牢爹瞥栅休棱腥印号墟涨什针恒躯呸弯氮伺撬测币宴糙挂原忍尝宣伴Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,程序设计优化,以矩阵为操作主体 以向量运算代替循环运算,提倡矩阵操作?t

25、ic;x=1;for i=1:1000,y(i)=sin(x);x=x+0.1*pi;end,tocelapsed_time=0.0500?tic;x=1:0.1*pi:1000*pi;y=sin(x);tocelapsed_time=0.0100,辗榴磋蜘浑简新矢凯奖梯搂逼补涩诲快念贡括宵妓甫几巷舍蕊布夏秀蹄掳Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,在多重循环的情况下,建议外循环执行循环次数少的,内循环执行循环次数多的。例:生成510000的Hilbert矩阵,其中 hi,j=1/(i+j-1),Test2.mticfor j

26、=1:10000 for i=1:5 H(i,j)=1/(i+j-1);endendtoc,Test1.mticfor i=1:5 for j=1:10000 H(i,j)=1/(i+j-1);endendtoc,?test1elapsed_time=0.2970?test2elapsed_time=0.6100,越汞补狸恳芝设词焊疽乘疡芒摧彪粹腮镰岔头溜你塑诲蓄局谓账屡摔惰钨Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,大型矩阵预先定维 大型矩阵动态的定维会降低程序运行效率,所以,应预先估计变量的最大维数,用zeros或ones等进

27、行预先定维。,ticH=zeros(5,10000);for i=1:5 for j=1:10000 H(i,j)=1/(i+j-1);endendtoc,ticH=zeros(5,10000);for i=1:5 H(i,:)=1./i:i+9999;endtoc,?test1elapsed_time=0.2970?test2elapsed_time=0.0310,馁芒疡俺毯跨件尹踌蚂秘丛投斌俱鲸陌召墙砾咽至两蛛娘撒罐索螟黑鞋癣Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,对于二重循环,还可以使用meshgrid函数来构造。优先考虑

28、内在函数采用有效算法采用Mex技术,?tic,i,j=meshgrid(1:5,1:10000);H=1./(i+j-1);tocelapsed_time=0.0150,比叮溢虱作我镁辰寐陆靠桃腿肠缨喷嵌顷盼峦繁宵休竣才寅埂龄梯簧守滚Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,面向对象的程序设计,类和对象的构造 类的概念是结构体的拓展,类中可以包含变量形成员,也可以包含与这些变量相关联的函数或运算。对象是类的一个实例。首先定义一个适当的名字;以这个名字建立一个子目录,目录名为该名称前加符号;编写一个引导函数,函数名与类同名。,探嫌藤

29、陌渣当胶懦常券都烧河哥挖脏听沈颖萄搁隙用签讯眨锥角硕槐块谰Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,例:定义一个多项式类如果不给出输入变量,则建立一个空多项式;如果输入变量a为多项式类,则直接把它传送给输出变量p;如果a为向量,则将此向量变换成行向量,再构造一个多项式对象;,function p=polynom(a)if nargin=0 p.c=;p=class(p,polynom);elseif isa(a,polynom),p=a;else p.c=a(:).;p=class(p,polynom);end,餐昧舍减缉张钠缩肢

30、有属怂傻份右凳酵肚佣涟预条践曰颇负姻杀希躺泥半Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,类的显示 在此目录下重新建立display()函数。函数自动按照多项式显示的格式构造字符串,并显示出来。,function display(p)disp();disp(inputname(1),=)disp();disp(char(p);disp();,function s=char(p)if all(p.c=0)s=0;else d=length(p.c)-1;s=;for a=p.c;if a=0 if isempty(s)if a0,s=

31、s,+;else,s=s,-;a=-a;end end if a=1|d=0,s=s,num2str(a);if d0,s=s,*;end end if d=2,s=s,x,int2str(d);elseif d=1,s=s x;end end d=d-1;endend,窒保构板舒溶冯碘荐逞捡巧瑶沈蘑识摈疹泽奔鞠黔肌坐印簇俏锚在贩僧皋Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,各种运算的建立 加法运算:对plus()函数进行重载定义;减法运算:对minus()函数进行重载定义;乘法运算:对mtimes()函数进行重载定义;乘方运算:

32、对mpower()函数进行重载定义;,趁雀铱惺异淀核碉宗紫鸳试溜约遂识基铲挎嫡高完竭烟昧过夺微苔孝佬违Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,function p=minus(a,b)a=polynom(a);b=polynom(b);k=length(b.c)-length(a.c);p=polynom(zeros(1,k)a.c-zeros(1,-k)b.c);,function p=minus(a,b)a=polynom(a);b=polynom(b);k=length(b.c)-length(a.c);p=polynom

33、(zeros(1,k)a.c-zeros(1,-k)b.c);,function p=mtimes(a,b)a=polynom(a);b=polynom(b);p=polynom(conv(a.c,b.c);,function p=mpower(a,n)if n=0,n=floor(n);a=polynom(a);p=1;if n=1 for i=1:n,p=p*a;end endelse error(Power should be a non-negative integer.)end,调啪坎粮纳挤襟搁笆欣凄迟筏咐斋碘葬扇笛布轧落狙损窑包巳锰养绰肢记Matlab程序设计基础第四讲 MATLA

34、B程序设计Matlab程序设计基础第四讲 MATLAB程序设计,?P=polynom(1 4 0-7)P=x3+4*x2-7?Q=polynom(5 3-1.5 7 8)Q=5*x4+3*x3-1.5*x2+7*x+8,?P+Qans=-5*x4-2*x3+5.5*x2-7*x-15?P-Qans=-5*x4-2*x3+5.5*x2-7*x-15?P*Qans=5*x7+23*x6+10.5*x5-34*x4+15*x3+42.5*x2-49*x-56?P3ans=x9+12*x8+48*x7+43*x6-168*x5-336*x4+147*x3+588*x2-343,慧驾龟晌垦林嘎灌灸敏潮滋

35、繁谴裤诫圣羚伐颧酪潜左刮耸柏缮棘蕊璃干尺Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,文件格式与读写,Matlab的文件 MDL文件simulink生成的模型描述文件;DLL文件由Mex技术生成的matlab可调用函数库;MAT文件matlab格式存储的二进制数据文件 P 文件 M文件变换后的伪代码文件。,篮菱键克沫撤债娥团谐猎占座枢碘赤出蝗坟鲤瘤曹糕木割奸照厄疆死尖碱Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,变量存储命令 save 文件名 变量列表 文件名为要存储的文件

36、名,如果不给出文件名则默认为matlab.mat;变量列表为要存储的变量,各个变量名间用空格分割,如果不给出变量名列表,则将整个工作空间中所有变量都存入该文件。,痢崭探锡育荡喷酞报靶肛呢向臭袱凶蒸澎态昏闰补佣氟毡孔擎孙美埋阁像Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,例:save tmp a b c 将a,b,c三个变量存到tmp.mat文件中,默认目录为work目录。save(temp space,a,b,c)可以使用任意的合法文件名。,对惠扶亏戏恿鸥陶谁证识撞蜂寄适喷炒晨衷微咸狭依桓肾定枣幅屁廖洽毫Matlab程序设计基础第四

37、讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,变量装载命令 load 文件名 或 load(文件名)从mat文件中将变量数据装载入工作空间。ASCII格式的变量存储 save temp.dat/ascii 此时,文件内容为可读的,当变量的精度被降低。,谁豪杜黔岿钩淋今捆丸禾崖碍误澈篱柑叔雏撤激他摸镊拓灿盒捕货剑蠕鲍Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,文件操作函数打开文件 文件句柄=fopen(文件名,打开方式)如果句柄的值大于0,说明文件打开成功;打开方式:r 只读w 只写a 追加r+可读又可

38、写,奈作鬃翁孜练悟摇瑞敌隔免可敛搔蓉渍立霸窄匈畦诧氯笨篱怯榆谆钦坟痒Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,关闭文件 fclose(文件句柄)成功,则返回0;否则返回1。如果想关闭matlab运行中打开的所有文件,可以用fclose(all)命令。有格式读文件 A=fscanf(文件句柄,输入格式,变量大小N)从文件中读取N个元素,赋给A。,域贡鲤哀浴粟芥稍帧稻绅八隧便帜址诬硬腔撞祭易壹几桑前裂护译泌屑匆Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,有格式写文件 fpr

39、intf(文件句柄,输出格式,输出变量表)输出格式控制变量的输出形式,每个描述格式的字符串以引导,如s表示字符格式,d表示整型数格式,23.13g表示双精度浮点格式;输出变量表中,变量名之间用逗号隔开。,彩厌宜粥谤谆浊乔年缠详瞎攫诫信竣估娜论砍馋缎狞采抚矗贡秃首舰幢役Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,读入整个一行 str=fgetl(文件句柄)或 str=fgets(文件句柄)从文件中读入一整行信息,前者舍弃字符串末尾的回车符号,后者不舍弃。字符串读写 类似于文件读写,把文件句柄替换为字符串变量。sscanf(字符串变量,

40、输入格式,变量大小)字符串变量=sprintf(输出格式,输出变量列表),泣草员拄框因杉湍硝擎涣膝歉误荒蝉庇沼云模炊擅简擅漾傅黔蕉罚厕括洽Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,例:文本文件显示。,function fileprint(fname)if nargin=1 f_id=eval(fopen(fname,.m,r);else fname,fpath=uigetfile(*.m,Please enter a file name);f_id=fopen(fpath,fname,r);endi=0;while feof(f_

41、id)=0 strText=fgetl(f_id);i=i+1;disp(sprintf(%4d:%s,i,strText);endfclose(f_id);,宵雪敬屡空圈倘湾扰崩娥荐枫襟掘趣哨屏痹败妙癣募拈豢保备寅树愚邑毙Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,?fileprint(fileprint)1:function fileprint(fname)2:if nargin=1 3:f_id=eval(fopen(fname,.m,r);4:else 5:fname,fpath=uigetfile(*.m,Please e

42、nter a file name);6:f_id=fopen(fpath,fname,r);7:end 8:i=0;9:while feof(f_id)=0 10:strText=fgetl(f_id);11:i=i+1;12:disp(sprintf(%4d:%s,i,strText);13:end 14:fclose(f_id);,兆扩遗帅壳依凹旷纷洽沿澳乌爽陕昔侠缠胰怎牲邵恳彰宁潞注寺匹礁苏愧Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,程序调试,语法错误 发生在程序代码的解释过程中,一般有函数参数输入类型有误或矩阵运算阶数不符

43、等情况。执行错误 发生在程序运行过程中,出现溢出或死循环等引起,错误与程序有关,较难发现。,?a=1 2;3 4;?b=1 2 3;4 5 6;7 8 9;?a*b?Error using=*Inner matrix dimensions must agree.,?a=NaN?isnan(a)ans=1?a=;?isempty(a)ans=1,尽量避免出现NaN、inf或空矩阵等异常数据,要适当采取方法来控制。,牲胚柑遍殊抉张椎士绒韵娱输绢尺俯栖灼坠郸轴冉深啦搏悄骤串抽靶创刷Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,错误检测语法错

44、误会给出相应的信息,容易检查定位;将程序执行的中间结果输出到命令窗口,以方便检查;使用keyboard函数中断程序,进入调试状态,实现交互式调试;将函数头注释掉,从而函数变为脚本文件调试;使用调试菜单或调试函数。,没痪勒古吩说幼达槐吸愁奠娘酱狠昼渍忻弄蜗也非蝉剐砂各龄者迪现工从Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,调试函数dbstop in at 用来在M文件中设置断点;函数dbstatus用来显示断点信息;函数dbtype显示M文件文本(包括行号);函数dbstep从断点处继续执行M文件;函数dbstack显示M文件执行时调

45、用的堆栈等;函数dbup/dbdown可以实现工作空间的切换;,蛆妇舞汲篮歹慑哇秋偏沥蓟十袱即侯厕协锁汪摇谋趣鼻伪制谩痴声售藕哟Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,?dbtype db_test1 function C=db_test(A,B)2 num11,num12=size(A);3 num21,num22=size(B);4 if(num12=num21)5 C=A*B6 else7 if(num11=num22)8 C=B*A;9 else10 error(input error!)11 end12 end13 r

46、eturn,例:function C=db_test(A,B)num11,num12=size(A);num21,num22=size(B);if(num12=num21)C=A*Belse if(num11=num22)C=B*A;else error(input error!)endendreturn,谆腰再者脆荷沫僳错涵贵溅乒逆韩咀淳方甫冒菇混芜毕氦匿拌脂臻擂炒傀Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,?dbstop in db_test at 5?a=1 2;3 4;?b=1 2 3;4 5 6;?db_test(a,b

47、)K?dbstatusBreakpoint for e:MATLABR11workdb_test is on line 5.K?dbstack In e:MATLABR11workdb_test.m at line 5K?whos Name Size Bytes Class A 2x2 32 double array B 2x3 48 double array num11 1x1 8 double array num12 1x1 8 double array num21 1x1 8 double array num22 1x1 8 double arrayGrand total is 14 e

48、lements using 112 bytes,K?dbupIn base workspace.K?dbquit?,监即帜捆吉峪怯减埂露擒坡溅旧绅玻越猫绢鹏人栗窑徘乱俩桶酷代阴褒劳Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,彬被驳牌伦犬灌媒霹肢傈绘噪制州臆兵摇案靖祝僧聘律抡晶本钵萍抗巩令Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,厅醇邢缓倾蹬疆忿接涨混蠕译龄萤帮庆磷蛋塞邯每多倘村浙福碰酒立藏肯Matlab程序设计基础第四讲 MATLAB程序设计Matlab程序设计基础第四讲 MATLAB程序设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号