MATLAB5程序设计.ppt
《MATLAB5程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB5程序设计.ppt(51页珍藏版)》请在三一办公上搜索。
1、第5章 MATLAB程序设计,5.1 脚本文件和函数文件,M文件有两种形式:M脚本文件和M函数文件。,1、M文本编辑器2、M文件的基本形式 M脚本文件(Script File)M函数文件(Function File),3、M脚本文件,脚本文件的特点:(1)脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。(2)MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行。(3)与在命令窗口中直接运行命令一样,脚本文件运行产生的变量都是驻留在MATLAB的工作空间(workspace)中,可以很方便地查看变量,除非用clear命令清除。,
2、4、M函数文件,函数文件的特点:(1)第一行总是以“function”引导的函数声明行;函数声明行的格式:function 输出变量列表=函数名(输入变量列表)(2)函数文件在运行过程中产生的变量都存放在函数本身的工作空间;(3)当文件执行完最后一条命令或遇到“return”命令时,就结束函数文件的运行,同时函数工作空间的变量就被清除;(4)函数的工作空间随具体的M函数文件调用而产生,随调用结束而删除,是独立的、临时的,在MATLAB运行过程中可以产生任意多个临时的函数空间。,【例5.0】根据不同阻尼系数,编写M脚本文件和M函数文件分别绘制二阶系统的时域曲线。欠阻尼系统的时域输出y与x的关系为
3、:,5.2 程序流程控制,1、for.end循环结构,语法:for 循环变量=array(表达式)循环体end 说明:array可以是向量也可以是矩阵,循环变量依次取array的各列,每取一次循环体执行一次。循环体被循环执行,执行的次数就是array的列数。,【例5.1】使用for.end循环的array向量编程求出 1+3+5.+99 的值。%EX0501 使用向量for循环sum=0;for n=1:2:99 sum=sum+n;endsum,2、while.end循环结构,语法:while 表达式循环体end 说明:只要表达式为逻辑真,就执行循环体;一旦表达式为假,就结束循环。表达式可以
4、是向量也可以是矩阵,如果表达式为矩阵则当所有的元素都为真才执行循环体,如果表达式为nan,MATLAB认为是假,不执行循环体。表达式矩阵通常是11的关系表达式。,*注意:for.end循环的循环次数是确定的,而while.end循环的循环次数不确定。,【例5.2】与【例5.1】相同,计算1+3+5.+99 的值。,%使用while循环sum=0;n=1;while n=99 sum=sum+n;n=n+2;endsumn sum=2500n=101,3、Ifelseend条件转移结构,语法:if 条件式1语句段1elseif 条件式2语句段2.else语句段n+1end说明:当有多个条件时,条
5、件式1为假再判断elseif的条件式2,如果所有的条件式都不满足,则执行else的语句段n+1,当条件式为真则执行相应的语句段;Ifelseend结构也可以是没有elseif和else的简单结构。,条件转移结构框图,if,elseif,elseif,else,【例5.3】用If结构执行二阶系统时域响应。根据阻尼系数01和=1两种情况,得出不同的时域响应表达式:,function y=Ex0503(zeta)%EX0503 使用if结构的二阶系统时域响应x=0:0.1:20;if(zeta0)endplot(x,y),4、switchcase开关结构,语法:switch 开关表达式case 表达
6、式1 语句段1case表达式2 语句段2.otherwise 语句段nend,说明:(1)将开关表达式依次与case后面的表达式进行比较,如果表达式1不满足,则与下一个表达式2比较,如果都不满足则执行otherwise后面的语句段n;一旦开关表达式与某个表达式相等,则执行其后面的语句段。(2)开关表达式只能是标量或字符串。(3)case后面的表达式可以是标量、字符串或元胞数组,只要某个元素与开关表达式相等,就执行其后的语句段。,【例5.4】用switchcase开关结构得出各月份的季节。%Li 05 使用switch结构for month=1:12;switch month case3,4,5
7、 season=spring case6,7,8 season=summer case9,10,11 season=autumn otherwise season=winter endend,5、try.catch.end试探结构,语法:try 语句段1catch 语句段2end 说明:首先试探性地执行语句段1,如果在此段语句执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并放弃这段语句,转而执行语句段2中的语句,当执行语句段2又出现错误,则终止该结构。,【例5.5】用try.catch.end结构来进行矩阵相乘运算。,%EX0505 try结构n=4;a=magic(n);m=
8、3;b=eye(m);try c=a*bcatch c=a(1:m,1:m)*bendlasterr,c=16 2 3 5 11 10 9 7 6ans=Error using=*Inner matrix dimensions must agree.,6、流程控制语句,(1)break命令break命令可以使包含break的最内层的for或while语句强制终止,立即跳出该结构,执行end后面的命令,break命令一般和If结构结合使用。,【例2.4】计算1+3+5.+100 的值,当和大于1000时终止计算。%EX0509 用break终止while循环 sum=0;n=1;while n=
9、100 if sum1000 sum=sum+n;n=n+2;else break end end sum n,当程序进入死循环,可按Ctrl+Break组合键终止程序运行,(2)continue命令continue命令用于结束本次for或while循环,只结束本次循环而继续进行下次循环。例(3)return命令return命令是终止当前命令的执行,并且立即返回到上一级调用函数或等待键盘输入命令,可以用来提前结束程序的运行。(4)pause命令pause命令用来使程序运行暂停,等待用户按任意键继续。语法:pause%暂停pause(n)%暂停n秒(5)keyboard命令keyboard命令用
10、来使程序暂停运行,等待键盘命令,执行完自己的工作后,输入return语句,程序就继续运行。,(6)input命令input命令用来提示用户应该从键盘输入数值、字符串和表达式,并接受该输入。,a=input(input a number:)%输入数值给a input a number:45a=45 b=input(input a number:,s)%输入字符串给binput a number:45b=45 input(input a number:)%将输入值进行运算input a number:2+3ans=5,例5.6 求100,200之间第一个能被21整除的整数。程序如下:for n=1
11、00:200if rem(n,21)=0 continueendbreakendn,5.2 循环结构与动画,一、以电影方式产生动画,该方式是以图像的方式预存多个画面,再将这些画面逐帧播放,得到动画效果。,步骤:,(1)使用getframe命令来抓取图形作为画面,每个画面都是以一个列向量的方式,置于存放整个电影的矩阵M中。(2)使用movie(M,k)命令来播放电影,并可指定矩阵M播放的重复次数k。,二、以对象方式产生动画,1擦除属性Erase Mode 以对象方式产生动画需要设置EraseMode属性,EraseMode为一个字符串,代表对象的擦除方式,即对于旧对象的处理方式。EraseMod
12、e属性有:xor:将旧对象的点以xor的方式还原,即只画与屏幕色不一致的新对象点,擦除不一致的原对象点,这种方式不会擦除被擦对象下面的其他图像。background:将旧对象的点变成背景颜色,实现擦除,这种方式会擦除被擦对象下面的其他图像。none:保留旧对象的点,不做任何擦除。,以对象方式产生动画就是擦除旧对象,产生相似但不同的新对象。使用句柄图形的概念,对其中选的对象可以通过属性设置进行修改。,2对象的位置属性,通常在动画过程中,会改变对象的位置或尺寸、颜色等外观属性,位置属性有:xdata:为一个向量,代表对象的x坐标值。ydata:为一个向量,代表对象的y坐标值。,3屏幕刷新 当新对象
13、的属性设置后,应刷新屏幕,使新对象显示出来,刷新屏幕用drawnow命令实现。也可使用pause命令暂停。,产生动画的具体步骤是:(1)先产生一个对象,其EraseMode属性为xor、background或none;(2)在循环中产生动画,每次循环改变此对象的xdata或ydata(或两者);(3)使用drawnow命令刷新屏幕,例 使用对象方式产生用一个红色小球沿曲线 运动的动画。,5.3 函数调用和参数传递,子函数 在一个M函数文件中,可以包含一个以上的函数,其中只有一个是主函数,其它则为子函数。(1)在一个M文件中,主函数必须出现在最上方,其后是子函数,子函数的次序无任何限制;(2)子
14、函数不能被其它文件的函数调用,只能被同一文件中的函数(可以是主函数或子函数)调用;(3)同一文件的主函数和子函数变量的工作空间相互独立;(4)用help和lookfor命令不能提供子函数的帮助信息。,1、子函数和私有函数,【例5.11】将画二阶系统时域曲线的函数作为子函数,编写画多条曲线的程序。,function Ex0511()%EX0511 使用函数调用绘制二阶系统时域响应z1=0.3;Ex0502(z1);%调用Ex0502hold onz1=0.5Ex0502(z1)%调用Ex0502z1=0.707;Ex0502(z1)%调用Ex0502function y=Ex0502(zeta)
15、%子函数,画二阶系统时域曲线x=0:0.1:20;y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta)plot(x,y),私有函数是指存放在private子目录中的M函数文件,具有以下性质:(1)在private目录下的私有函数,只能被其父目录的M函数文件所调用,而不能被其它目录的函数调用,对其它目录的文件私有函数是不可见的,私有函数可以和其它目录下的函数重名;(2)私有函数父目录的M脚本文件也不可调用私有函数;(3)在函数调用搜索时,私有函数优先于其它MATLAB路径上的函数。,私有函数,调用函数的搜索顺序,在MAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB5 程序设计
链接地址:https://www.31ppt.com/p-2698517.html