MATLAB 实用教程:第5章MATLAB程序设计

上传人:人*** 文档编号:559484531 上传时间:2022-10-18 格式:DOC 页数:31 大小:1.46MB
返回 下载 相关 举报
MATLAB 实用教程:第5章MATLAB程序设计_第1页
第1页 / 共31页
MATLAB 实用教程:第5章MATLAB程序设计_第2页
第2页 / 共31页
MATLAB 实用教程:第5章MATLAB程序设计_第3页
第3页 / 共31页
MATLAB 实用教程:第5章MATLAB程序设计_第4页
第4页 / 共31页
MATLAB 实用教程:第5章MATLAB程序设计_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《MATLAB 实用教程:第5章MATLAB程序设计》由会员分享,可在线阅读,更多相关《MATLAB 实用教程:第5章MATLAB程序设计(31页珍藏版)》请在金锄头文库上搜索。

1、第5章 MATLAB程序设计5.1脚本文件和函数文件M文件有两种形式:M脚本文件和M函数文件。5.1.1 M文本编辑器MATLAB的M文件是通过M文件编辑调试器窗口(EditorDebugger)来创建的。图5.1 M文件编辑/调试器窗口单击MATLAB桌面上的图标,或者单击菜单“File”“New”“M-file”,可打开空白的M文件编辑器,也可以通过打开已有的M文件来打开M文件编辑器。如图5.1所示为打开已创建的M文件。5.1.2 M文件的基本格式下面介绍绘制二阶系统时域曲线的M文件,欠阻尼系统的时域输出y与x的关系为,【例5.1】为M脚本文件,【例5.2】为M函数文件。【例5.1】用M脚

2、本文件绘制二阶系统时域曲线。%EX0501 二阶系统时域曲线%画阻尼系数为0.3的曲线x=0:0.1:20;y1=1-1/sqrt(1-0.32)*exp(-0.3*x).*sin(sqrt(1-0.32)*x+acos(0.3)plot(x,y1,r) 【例5.2】创建一个画二阶系统时域曲线的函数,阻尼系数zeta为函数的输入参数。function y=Ex0502(zeta)% EX0502 Step response of quadratic system.% 二阶系统时域响应曲线% zeta 阻尼系数% y 时域响应% copyright 2003-08-01x=0:0.1:20;y=

3、1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta)plot(x,y)M函数文件的基本格式:函数声明行H1行(用%开头的注释行)在线帮助文本(用%开头)编写和修改记录(用%开头)函数体 例如,在命令窗口输入help和lookfor命令查看帮助信息: help Ex0502 EX0502 Step response of quadratic system. 二阶系统时域响应曲线 zeta 阻尼系数 y 时域响应 lookfor 二阶系统时域响应Ex0502.m: %二阶系统时域响应5.1.3 M脚本文件脚本文件的特点:(1)

4、 脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。(2) MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行。(3) 与在命令窗口中直接运行命令一样,脚本文件运行产生的变量都是驻留在MATLAB的工作空间(workspace)中,可以很方便地查看变量,除非用clear命令清除;脚本文件的命令也可以访问工作空间的所有数据,因此要注意避免变量的覆盖而造成程序出错。【例5.1续】在M文件编辑调试器窗口中编写M脚本文件绘制二阶系统的多条时域曲线。(1) 单击MATLAB桌面上的图标打开M文件编辑器。(2) 将命令全部写入M文件编辑器

5、中,为了能标志该文件的名称,在第一行写入包含文件名的注释。保存文件为Ex0501.m。%EX0501 二阶系统时域曲线x=0:0.1:20;y1=1-1/sqrt(1-0.32)*exp(-0.3*x).*sin(sqrt(1-0.32)*x+acos(0.3)plot(x,y1,r) %画阻尼系数为0.3的曲线hold ony2=1-1/sqrt(1-0.7072)*exp(-0.707*x).*sin(sqrt(1-0.7072)*x+acos(0.707)plot(x,y2,g) %画阻尼系数为0.707的曲线y3=1-exp(-x).*(1+x)plot(x,y3,b) %画阻尼系数为

6、1的曲线图5.2 运行界面(3) 选择M文件编辑器菜单“Debug”“Run”,就可以在图形窗中看到如图5.2所示的曲线。查看工作空间的变量: whos Name Size Bytes Class x 1x201 1608 double array y1 1x201 1608 double array y2 1x201 1608 double array y3 1x201 1608 double arrayGrand total is 804 elements using 6432 bytes 5.1.4 M函数文件函数文件的特点:(1) 第一行总是以“function”引导的函数声明行;函数

7、声明行的格式: function 输出变量列表 = 函数名(输入变量列表)(2) 函数文件在运行过程中产生的变量都存放在函数本身的工作空间;(3) 当文件执行完最后一条命令或遇到“return”命令时,就结束函数文件的运行,同时函数工作空间的变量就被清除;(4) 函数的工作空间随具体的M函数文件调用而产生,随调用结束而删除,是独立的、临时的,在MATLAB运行过程中可以产生任意多个临时的函数空间。【例5.2续】在M文件编辑调试器窗口编写计算二阶系统时域响应的M函数文件,并在MATLAB命令窗口中调用该文件。创建M函数文件并调用的步骤如下:(1) 编写函数代码function y=Ex0502(

8、zeta)%EX0502画二阶系统时域曲线x=0:0.1:20;y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta)plot(x,y)(2) 将函数文件保存为“Ex0502.m”。(3) 在MATLAB命令窗口输入以下命令,则会出现f的计算值和绘制的曲线: f=Ex0502(0.3)程序分析: 第一行指定该文件是函数文件,文件名为“Ex0502”,输入参数为阻尼系数zeta,输出参数为时域响应y。 当函数文件调用结束,查看x、y: x? Undefined function or variable x. y? Unde

9、fined function or variable y.注意:M脚本文件和M函数文件的文件名及函数名的命名规则与MATLAB变量的命名规则相同。5.2程序流程控制5.2.1 for . end循环结构语法: for 循环变量=array循环体end 说明:循环体被循环执行,执行的次数就是array的列数,array可以是向量也可以是矩阵,循环变量依次取array的各列,每取一次循环体执行一次。【例5.3】使用for . end循环的array向量编程求出 1+3+5.+100 的值。% EX0503 使用向量for循环sum=0;for n=1:2:100 sum=sum+n;endsum

10、sum = 2500 计算的结果为:sum =2500。程序说明:循环变量为n,n对应为向量1:2:100,循环次数为向量的列数,每次循环n取一个元素。【例5.4】使用for . end循环的array矩阵编程将单位阵转换为列向量。% EX0504 使用矩阵for循环sum=zeros(6,1);for n=eye(6,6) sum=sum+n;endsum sum = 1 1 1 1 1 1 程序分析:循环变量n对应为矩阵eye(6,6)的每一列,即第一次n为1;0;0;0;0;0,第一次n为0;1;0;0;0;0;循环次数为矩阵的列数6。5.2.2 while . end循环结构语法: w

11、hile 表达式循环体end 说明:只要表达式为逻辑真,就执行循环体;一旦表达式为假,就结束循环。表达式可以是向量也可以是矩阵,如果表达式为矩阵则当所有的元素都为真才执行循环体,如果表达式为nan,MATLAB认为是假,不执行循环体。【例5.5】与【例5.3】相同,计算1+3+5.+100 的值。% EX0505 使用while循环sum=0;n=1;while n=100 sum=sum+n; n=n+2 ;endsumn sum = 2500n = 101 程序分析:可以看出while . end循环的循环次数由表达式来决定,当n=101就停止循环。5.2.3 Ifelseend条件转移结

12、构语法:if 条件式1语句段1elseif 条件式2语句段2. else语句段n+1end说明:当有多个条件时,条件式1为假再判断elseif的条件式2,如果所有的条件式都不满足,则执行else的语句段n+1,当条件式为真则执行相应的语句段;Ifelseend结构也可以是没有elseif和else的简单结构。【例5.6】用If结构执行二阶系统时域响应,根据阻尼系数0zeta0)&(zeta1) y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta);elseif zeta=1 y=1-exp(-x).*(1+x);end

13、plot(x,y)5.2.4 switchcase开关结构语法:switch 开关表达式case 表达式1 语句段1case表达式2 语句段2. otherwise 语句段nend 说明:(1) 将开关表达式依次与case后面的表达式进行比较,如果表达式1不满足,则与下一个表达式2比较,如果都不满足则执行otherwise后面的语句段n;一旦开关表达式与某个表达式相等,则执行其后面的语句段。(2) 开关表达式只能是标量或字符串。(3) case后面的表达式可以是标量、字符串或元胞数组,如果是元胞数组则将开关表达式与元胞数组的所有元素进行比较,只要某个元素与开关表达式相等,就执行其后的语句段。【例5.7】用switchcase开关结构得出各月份的季节。% EX0507 使用switch结构for month=1:12; switch month case3,4,5 season=spring case6,7,8 season=summer case9,10,11

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

当前位置:首页 > 高等教育 > 其它相关文档

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