MATLAB及其应用-第4讲67603_第1页
MATLAB及其应用-第4讲67603_第2页
MATLAB及其应用-第4讲67603_第3页
MATLAB及其应用-第4讲67603_第4页
MATLAB及其应用-第4讲67603_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第4讲讲 M文件和面向对象编程文件和面向对象编程4.1 M文件文件4.2 MATLAB控制流控制流4.3 脚本文件和函数文件脚本文件和函数文件24.1 M文件文件一、一、M文件概述文件概述用MATLAB语言编写的程序,称为M文件。二、二、M文件的建立和编辑文件的建立和编辑1、建立新的M文件 (1)菜单操作:File New M-file。 (2)命令操作:在Command Window中输入edit。 (3)命令按钮操作:单击工具栏上的“新建” 按钮。2、编辑已有的M文件3三、三、M文件分为两类文件分为两类命令文件(Script File)函数文件(Function File)4例1:分别

2、建立命令文件和函数文件,将华氏温度F转换为摄氏温度C。命令文件:命令文件: F2C1.mclear F=input(Input Fahrenheit temperature:F=);C=5*(F-32)/9函数文件:函数文件:F2C2.mfunction C=F2C2(F)C=5*(F-32)/954.2 MATLAB控制流控制流一、程序结构二、控制程序流的其他常用指令6一、 程序结构1. 顺序结构例:%用符号计算求微分syms a t x;f=a, t3; t*cos(x), log(x);df=diff(f);dfdt2=diff(f, t, 2);dfdxdt=diff(diff(f,

3、x), t);72. 循环结构for循环结构:循环结构:for 循环变量起始值:步长:终止值 循环体endwhile循环结构:循环结构:while 表达式 循环体end8注意:(1)循环结构可嵌套使用;(2)为得到高效代码,应尽量提高代码的向量化程度,避免使用循环结构;(3)循环指令前最好对数组进行预定义,以提高运行效率;(4)使用while循环时,一定要注意避免进入死循环。9例2. 已知y(0)=0, y(n)-y(n-1)=n-2,当n=100时,求y. 程序如下: clear y=0; n=100; for i=1:n y=y+1/i/i; end y 在实际编程中,为提高程序的执行速度

4、,常用向量运算来代替循环操作: clear n=100; i=1:n; f=1./i.2; y=sum(f)10例3:若数组a中a1=a2=1,且ak+2=ak+ak+1,试求该数组中第一个大于10000的元素程序如下: clear a(1)=1; a(2)=1; i=2; while a(i)=10000 a(i+1)=a(i-1)+a(i); i=i+1; end i, a(i)113. 分支结构if-else-end分支结构:分支结构:if 逻辑表达式 执行语句 endif 逻辑表达式 执行语句1 else 执行语句2endif 逻辑表达式1 执行语句1elseif 逻辑表达式2 执行语

5、句2else 执行语句nend12switch-case分支结构:分支结构:switch 表达式(可以是标量或字符串) case 值1 语句1 case 值2 语句2 . otherwise 语句nend13例4. 计算分段函数值。 程序如下: clear x=input(请输入x的值:); if x=A & c=a& c=0& c=9 disp(abs(c)-abs(0); else disp(c); end15例6 某商场对顾客所购买的商品实行打折销售,已知打折标准,求所售商品的实际销售价格。 程序如下:clearprice=input(请输入商品价格);switch fix(price/

6、100) case 0,1 rate=0; case 2,3,4 rate=3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100;otherwise rate=14/100;endprice=price*(1-rate)164. try-catch结构try 执行语句1catch 执行语句2end17例7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两数组的点乘。程序如下:A=1,2,3;4,5,6;

7、B=7,8,9;10,11,12;try C=A*B;catch C=A.*B;endClasterr %显示出错原因18二、 控制程序流的其他常用指令1. return 指令强制MATLAB结束执行当前函数并把控制转出 2. keyboard指令: 当程序遇到keyboard时,MATLAB将控制权交给键盘,用户可以从键盘输入各种合法的MATLAB指令。只有当用户使用回车结束输入后,控制权才交还给程序。 193. input指令和disp指令input指令: 把MATLAB的控制权暂时交给用户。此后,用户通过键盘键入数值、字符串或表达式,并经“回车”把键入内容输入工作空间,同时把“控制权”交

8、还给MATLAB。 常用的格式:常用的格式:v=input(message) %将用户键入的内容赋给变量vv=input(message,s) %将用户键入的内容作为字符串赋给变量v20disp指令:格式:disp(输出项)输出项可以为字符串,也可为矩阵例8:求一元二次方程ax2+bx+c=0的根。程序如下:cleara=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a), (-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=, num2str(x(2);214. Pa

9、use指令暂时停止程序的运行。格式:格式: pause %暂停执行文件,等待用户按任意键继续 pause(n) %在继续执行之前,暂停n秒225. break指令和continue指令通常用于for或while循环中,与if语句配合使用。 break:用于终止循环的执行。continue:控制跳过循环体中的某些语句。继续下一次循环。23例9 求100,200之间第一个能被21整除的整数。程序如下:clearfor n=100:200 if rem(n,21)=0 continue endbreakendn245. error和warning指令error(message) %显示出错信息mes

10、sage,终止程序warning(message) %显示警告信息message,程序继续执行254.3 脚本文件和脚本文件和M函数文件函数文件一、脚本文件 二、M函数文件三、程序的调试26一、脚本文件 (命令文件)特点:(1)没有输入和输出 (2)由一系列指令组成(3)可在命令窗口直接运行指令(4)产生的所有变量存储在workspace中27二、M函数文件1. 特点:(1)第一行总是以“function”引导的“函数定义行”。并给出全部输入、输出宗量。 (2)函数文件运行,matlab就会专门为它开辟一个临时工作空间,称之为函数工作空间。 (3)函数工作空间相对workspace是独立的、临

11、时的。282、M函数文件的规则和属性 (1) 一般要求函数名和文件名必须相同。(2) 函数的输入参量和输出参量都可以是零个或更多个。当输出参量多于一个时,输出参量包含在方括号内。例如,V,D=eig(A).(3) 函数输入参量个数、输出参量个数分别由变量nargin和 nargout包含。函数调用时,输入和输出变量可以少于函数文件中所规定的变量数目,但不能多于29 3. 函数文件的构成(1)函数定义行function 输出形参表= 函数名(输入形参表)(2)H1行%注释说明部分,对程序的总体介绍(3)函数信息说明行 %简要描述函数功能,以及参数的含义,函数调用格式等(4)程序主体函数体(5)注

12、释%在函数体中会出现对某些程序行的注释304. 函数文件的调用:函数文件调用的一般格式: 输出实参表=函数名(输入实参表) 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。31例10:nargin用法示例函数文件examp.m: function f=examp(a,b,c) if nargin=1 f=a; elseif nargin=2 f=a+b; elseif nargin=3 f=(a*b*c)/2; en

13、d命令文件mydemo.m:clear x=1:3;y=1;2;3; examp(x) examp(x,y) examp(x,y,3)输出: ans = 1 2 3 ans = 2 4 6 ans = 2132总结:总结: MATLAB程序设计原则和技巧程序设计原则和技巧(1)后面的内容是程序的注解,要善于运用注解使程序更具可读性。(2)养成在主程序开头用clear指令清除变量的习惯,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用clear。(3)参数值要集中放在程序的开始部分,以便维护。要充分利用MATLAB工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中

14、间结果不在屏幕上显示,以提高执行速度。33(4)程序尽量模块化,也就是采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部的操作。(5)充分利用Debugger来进行程序的调试(设置断点、单步执行、连续执行)(6)设置好MATLAB的工作路径,以便程序运行。34三、程序的调试这部分内容是上机应用的重点内容。程序出错主要为两类:程序出错主要为两类: 1、语法错误 如缺(或)等,在运行时可检测出大多数该类错误,并指出错在哪一行。 2、算法错误 逻辑上的错误,不易查找,遇到此类错误时需耐心。一般可考虑如下方法:直接调试法和工具调试法35直接调试法:利用matlab的相关指令对程序进行调试。 主要方法有:删除句尾分号和利用disp语句,显示中间结果;在适当位置加上keyboard语句,使程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论