2022年第章MATLAB程序设计 .pdf
《2022年第章MATLAB程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年第章MATLAB程序设计 .pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 5章 MATLAB 程序设计5.1 脚本文件和函数文件M 文件有两种形式:M 脚本文件和M 函数文件。5.1.1 M 文本编辑器MATLAB的 M 文件是通过M 文件编辑调试器窗口(EditorDebugger)来创建的。单击MATLAB桌面上的图标,或者单击菜单“File”“New”“M-file”,可打开空白的M 文件编辑器,也可以通过打开已有的M 文件来打开M 文件编辑器。如图5.1 所示为打开已创建的M 文件。5.1.2 M 文件的基本格式下面介绍绘制二阶系统时域曲线的M 文件,欠阻尼系统的时域输出y 与 x 的关系为)cosax1sin(e111y2x2,【例5.1】为 M 脚本
2、文件,【例5.2】为 M 函数文件。【例 5.1】用 M 脚本文件绘制二阶系统时域曲线。%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.1 M 文件编辑 /调试器窗口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 31 页 - - - - - - - - - 【例 5.2】创建一个画
3、二阶系统时域曲线的函数,阻尼系数zeta为函数的输入参数。function y=Ex0502(zeta) % EX0502 Step response of quadratic system. % 二阶系统时域响应曲线% zeta 阻尼系数% y 时域响应% % copyright 2003-08-01 x=0:0.1:20; y=1-1/sqrt(1-zeta2)*exp(-zeta*x).*sin(sqrt(1-zeta2)*x+acos(zeta) plot(x,y) M 函数文件的基本格式:函数声明行H1 行(用% 开头的注释行) 在线帮助文本(用%开头 ) 编写和修改记录(用% 开头
4、 ) 函数体例如,在命令窗口输入help 和 lookfor 命令查看帮助信息: help Ex0502 EX0502 Step response of quadratic system. 二阶系统时域响应曲线 zeta 阻尼系数 y 时域响应 lookfor 二阶系统时域响应 Ex0502.m: %二阶系统时域响应5.1.3 M 脚本文件脚本文件的特点:(1) 脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。(2) MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行。(3) 与 在命令 窗口中 直接 运行命 令一样 ,脚本
5、文件运行产生的变量都是驻留在MATLAB的工作空间 (workspace)中,可以很方便地查看变量,除非用clear 命令清除;脚本文件的命令也可以访问工作空间的所有数据,因此要注意避免变量的覆盖而造成程序出错。【例 5.1 续】在 M 文件编辑调试器窗口中编写M 脚本文件绘制二阶系统的多条时域曲线。(1) 单击 MATLAB桌面上的图标打开M 文件编辑器。(2) 将命令全部写入M 文件编辑器中,为了能标志该文件的名称,在第一行写入包含文件名的注释。保存文件为Ex0501.m。%EX0501 二阶系统时域曲线名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
6、- - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 31 页 - - - - - - - - - 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 on y2=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,y
7、3,b)%画阻尼系数为1 的曲线(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 array Grand total is 804 elements using 6432 bytes 5.1.4 M 函数文件函数文件的特点:(1) 第一行总是以“function ”引导的
8、函数声明行;函数声明行的格式:function 输出变量列表 = 函数名 (输入变量列表) (2) 函数文件在运行过程中产生的变量都存放在函数本身的工作空间;图 5.2 运行界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 31 页 - - - - - - - - - (3) 当文件执行完最后一条命令或遇到“return”命令时,就结束函数文件的运行,同时函数工作空间的变量就被清除;(4) 函数的工作空间随具体的M 函数文件调用而产生,随调用结束而删除,是独立的、临时的
9、,在MATLAB运行过程中可以产生任意多个临时的函数空间。【例 5.2 续】在 M 文件编辑调试器窗口编写计算二阶系统时域响应的M 函数文件,并在 MATLAB命令窗口中调用该文件。创建 M 函数文件并调用的步骤如下:(1) 编写函数代码function y=Ex0502(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 的
10、计算值和绘制的曲线: f=Ex0502(0.3) 程序分析:第一行指定该文件是函数文件,文件名为“Ex0502”,输入参数为阻尼系数zeta,输出参数为时域响应y。当函数文件调用结束,查看x、y: x ? Undefined function or variable x. y ? Undefined function or variable y. 注意: M 脚本文件和M 函数文件的文件名及函数名的命名规则与MATLAB变量的命名规则相同。5.2 程序流程控制5.2.1 for . end循环结构语法:for 循环变量 =array 循环体end 说明:循环体被循环执行,执行的次数就是arra
11、y 的列数, array 可以是向量也可以是矩阵,循环变量依次取array 的各列,每取一次循环体执行一次。【例 5.3】使用 for . end 循环的 array 向量编程求出 1+3+5.+100 的值。% EX0503 使用向量 for 循环sum=0; for n=1:2:100 sum=sum+n; end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 31 页 - - - - - - - - - sum sum = 2500 计算的结果为:sum =250
12、0。程序说明:循环变量为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; end sum 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循环结构语法:while 表达式循环体
13、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 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 31 页 - - -
14、- - - - - - end sum n sum = 2500 n = 101 程序分析:可以看出while . end 循环的循环次数由表达式来决定,当n=101 就停止循环。5.2.3 Ifelse end条件转移结构语法:if 条件式 1 语句段 1 elseif 条件式 2 语句段 2 . else 语句段 n+1 end 说明:当有多个条件时,条件式1 为假再判断elseif 的条件式2,如果所有的条件式都不满足,则执行else 的语句段n+1,当条件式为真则执行相应的语句段;Ifelseend 结构也可以是没有elseif 和 else的简单结构。【例 5.6】用 If 结构执行
15、二阶系统时域响应,根据阻尼系数0zeta0)&(zeta * Inner matrix dimensions must agree. 程序分析:试探出矩阵的大小不匹配时,矩阵无法相乘,则再执行catch 后面的语句段,将 a的子矩阵取出与b 矩阵相乘。可以通过这种结构灵活地实现矩阵的乘法运算。5.2.6流程控制语句1. break 命令break命令可以使包含break 的最内层的for 或 while 语句强制终止,立即跳出该结构,执行 end后面的命令,break命令一般和If 结构结合使用。【例 5.9】将【例5.5】增加条件用If 与 break 命令结合,停止while 循环。计算1
16、+3+5.+100 的值,当和大于1000 时终止计算。% EX0509 用 break终止 while 循环sum=0; n=1; while n=100 if sum ex0514 Too many input arguments. 也可以在工作空间查看函数体定义的输入参数个数: nargin(Ex0514) ans = 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 31 页 - - - - - - - - - 【例 5.14 续 】添加以下程序,查看用nar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年第章MATLAB程序设计 2022 年第章 MATLAB 程序设计
限制150内