版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第第3章章 MATLAB程序设计程序设计 2 上一节回顾 2 2 01 4313, 2536 tt ztt ttt 其中:t=0: 0. 5: 6 Matlab程序: t=0:0.5:6; z4=t.2.*(t=0 y=cos(x); y1=(x3*pi/2).*y; q=(x7*pi/4); qn=q; y2=q*cos(pi/4)+qn.*y1; plot(x,y2) 4 本章目标 l 掌握掌握MATLAB的几种基本控制转移语句的几种基本控制转移语句 l学会使用学会使用M文件进行编程文件进行编程 l具备对较复杂问题的编程求解能力具备对较复杂问题的编程求解能力 5 主要内容 l3.1 M
2、文件文件 l3.2 MATLAB程序结构程序结构 l3.3 其其它流程控制语句它流程控制语句 l3.4 函数函数文件文件 l3.5 变量参数传递变量参数传递 l3.6 M文件调试文件调试 6 lMATLAB提供的强大的提供的强大的数学函数库数学函数库来处理较为来处理较为 复杂的数值数据问题。仅靠调用这些基本的函复杂的数值数据问题。仅靠调用这些基本的函 数库来处理特殊要求的问题,还是不够的。数库来处理特殊要求的问题,还是不够的。 l需要利用需要利用程序设计语言程序设计语言来编制专门的程序,由来编制专门的程序,由 程序来求解问题。程序来求解问题。 lMATLAB所提供的程序设计语言是一种被称为所提
3、供的程序设计语言是一种被称为 第四代编程语言的高级程序设计语言,其程序第四代编程语言的高级程序设计语言,其程序 简洁、可读性很强、调试容易。简洁、可读性很强、调试容易。 7 3.1 M文件文件 lMATLAB工作模式工作模式 l命令行方式 l程序文件驱动模式 l M文件:以文件:以.m为扩展名的文本文件。为扩展名的文本文件。一个一个M文文 件包含许多连续的件包含许多连续的MATLAB命令,它也可以引用其他命令,它也可以引用其他 的的M文件,可以递归。文件,可以递归。 l 从功能上看,从功能上看,M文件分为:文件分为: l命令文件(Script File) l函数文件(Function File
4、) (3.4讲解) 8 l命令文件是命令文件是命令和函数命令和函数的组合,执行命令文件不需要输的组合,执行命令文件不需要输 入参数,也没有输出参数,入参数,也没有输出参数,MATLAB自动按照顺序执自动按照顺序执 行命令文件中的命令,命令文件的变量保存在工作空间行命令文件中的命令,命令文件的变量保存在工作空间 中。中。 l函数文件是以函数文件是以function语句为引导的语句为引导的M文件,可以接受文件,可以接受 输入参数和返回输出参数,函数文件的内部变量是临时输入参数和返回输出参数,函数文件的内部变量是临时 的的局部变量局部变量,函数运行结束后,局部变量被释放。,函数运行结束后,局部变量被
5、释放。 9 例:输入例:输入x,y的值,并将它们的值互换后输出。的值,并将它们的值互换后输出。 方法一方法一(命令文件命令文件): clear; x=1:10; y=11:20; z=x; x=y; y=z; x y 10 clear; x=1:8; y=11:20; x,y=exch(x,y) 函数文件: functiona,b=exch(a,b) c=a;a=b;b=c 方法二(函数文件):方法二(函数文件): 11 lM文件建立、编辑文件建立、编辑 file-new-M-File 12 命令文件命令文件 l又称为脚本文件,是一串指令的集合。又称为脚本文件,是一串指令的集合。 l运行运行M
6、文件文件 在文本编辑器中选在文本编辑器中选Debug/Run 命令或按命令或按F5 键或在命令窗口使用命令行调用,用户只需键键或在命令窗口使用命令行调用,用户只需键 入该命令文件的文件名,系统就会自动逐行执入该命令文件的文件名,系统就会自动逐行执 行该文件中的各条语句。行该文件中的各条语句。 l适用于立即得到结果的小规模运算。适用于立即得到结果的小规模运算。 13 数据输入输出 l1. input命令命令 从键盘输入数据,该函数的调用格式为:从键盘输入数据,该函数的调用格式为: A=input(提示信息,选项提示信息,选项) 其中提示信息为一个其中提示信息为一个字符串字符串,用于提示用户,用于
7、提示用户 输入什么样的数据。输入什么样的数据。 如果在如果在input函数调用时采用函数调用时采用s选项,则允许选项,则允许 用户输入一个字符串。用户输入一个字符串。 命令执行后,在屏幕上显示出命令执行后,在屏幕上显示出提示信息提示信息 的文本并等待终端的输入的文本并等待终端的输入 14 l例: l输入一个小写字母,将其变成大写字母输入一个小写字母,将其变成大写字母 Matlab程序为程序为: ch=input(请输入一个字符请输入一个字符,s); if ch=a end ch 15 l2.disp命令命令 数据的输出,其调用格式为数据的输出,其调用格式为 disp (输出项输出项) 其中:输
8、出项既可以为字符串,也可以为矩其中:输出项既可以为字符串,也可以为矩 阵。阵。 16 例例 求一元二次方程求一元二次方程ax2 +bx+c=0的根。的根。 程序如下:程序如下: a=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); 17 l3. pause命令命令 程序的暂停,其调用格式为:程序的暂停,其调用格式为: pause(延迟秒数延迟秒数) 如果省略延迟时间,直接使用如果省略
9、延迟时间,直接使用pause,则将,则将 暂停程序,直到用户按任一键后程序继续执行。暂停程序,直到用户按任一键后程序继续执行。 若要强行中止程序的运行可使用若要强行中止程序的运行可使用Ctrl+C命命 令。令。 18 例例 延迟延迟6秒显示方程秒显示方程ax2 +bx+c=0的根。的根。 Matlab程序如下:程序如下: a=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); pause(6); disp(x1=,num2str(x(1),x2=,num2str(
10、x(2); 19 3.2 Matlab程序结构程序结构 l按照程序设计的观点按照程序设计的观点, 任何算法功能都可以通过任何算法功能都可以通过 由程序模块组成的三种基本程序结构的组合来由程序模块组成的三种基本程序结构的组合来 实现实现: l顺序结构顺序结构 l选择结构选择结构 l循环结构循环结构 20 程序程序模块模块1 1 程序模块程序模块2 2 lMATLAB中实现顺序结构的方法非常简单:中实现顺序结构的方法非常简单: l只需将程序语句顺序排列即可 1、顺序结构、顺序结构 按程序语句或模块在执行流中的顺序逐个执行。按程序语句或模块在执行流中的顺序逐个执行。 1 1、 21 l在在MATLA
11、B中,选择结构由中,选择结构由 两种语句结构实现:两种语句结构实现: lif语句语句 lswitch语句语句 条件条件 程序模块程序模块1 成立成立不成立不成立 程序模块程序模块2 程序按设定的条件实现执行流的多路分支程序按设定的条件实现执行流的多路分支 2、选择结构、选择结构 22 (1)if语句 if 表达式表达式 程序模块程序模块1 else 程序模块程序模块2 end 当表达式成立(为真)时,执行程序模块1, 否则执行程序模块2,程序模块1或程序模块2执 行后,再执行if语句的后继语句。 23 l例 计算分段函数的值。 程序如下: x=input(请输入x的值:); % 在屏幕上显示字
12、符串文本,在屏幕上显示字符串文本, if x=90 r= 成绩为:成绩为:A elseif n=80 r=成绩为:成绩为: B elseif n=70 r=成绩为:成绩为: C elseif n=60 r=成绩为:成绩为: D else r=成绩为:成绩为: E end 运行结果:运行结果: 请输入成绩:请输入成绩: 87 r = 成绩为:成绩为:B 26 (2)switch语句语句 switch语句根据表达式的取值不同,分别执行不同的语句语句根据表达式的取值不同,分别执行不同的语句 switch 表达式表达式(标量标量/字符串字符串) case 数值数值1(标量标量/字符串字符串/矩阵矩阵)
13、 程序模块程序模块1; case 数值数值2 程序模块程序模块2; otherwise 程序模块程序模块n end 27 例:将百分制的学生成绩转换为五级制的成绩输出 使用switch语句 clear n=input(输入输入n= ); switch fix(n/10) % fix( )函数向零方向取整函数向零方向取整 case 10,9 %一个一个case语句处理多值问题,将多值用语句处理多值问题,将多值用大括号大括号括起来括起来 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=E end 运行结果:运行结果: 输入输入n= 65 r =D
14、28 例例 某商场对顾客所购买的商品实行打折销售,标某商场对顾客所购买的商品实行打折销售,标 准如下准如下(商品价格用商品价格用price来表示来表示): price200 没有折扣没有折扣 200price500 3%折扣折扣 500price1000 5%折扣折扣 1000price2500 8%折扣折扣 2500price5000 10%折扣折扣 5000price 14%折扣折扣 输入所售商品的价格,求其实际销售价格。输入所售商品的价格,求其实际销售价格。 29 price=input(请输入商品价格); switch fix(price/100) case 0,1 %价格小于200
15、rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 P64 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格 Matlab程序如下程序如下: 30 3、循
16、环结构 l在在MATLAB中,循环结构可中,循环结构可 以由两种语句结构实现:以由两种语句结构实现: lfor语句循环结构 lwhile语句循环结构 程序模块程序模块 不成立不成立 成立成立 条件条件 按给定的条件重复地执行指定的程序段或模块。按给定的条件重复地执行指定的程序段或模块。 31 (1)for语句循环结构语句循环结构 for语句格式:语句格式: for 循环变量起始值:步长:终止值循环变量起始值:步长:终止值 循环体循环体 end 步长为步长为1时,可以省略。时,可以省略。 32 for:构造指定重复次数的循环结构构造指定重复次数的循环结构 如如: for x=0:pi/10:pi
17、 end 用于实现重复用于实现重复10次的循环。次的循环。 33 例:使用for结构计算1+2+3+100 Matlab程序为:程序为: clear sum=0; for i=1:100 sum=sum+i; end sum 运行结果:运行结果: sum = 5050 34 例例 已知,已知, 当当n=100时,求时,求y的值。的值。 Matlab程序(for 循环): y=0;n=100; for i=1:n y=y+1/i/i; end y 2222 1111 123 y n Matlab程序(向量): n=100; i=1:n; f=1./i.2; y=sum(f) 35 (2)whil
18、e语句循环结构语句循环结构 while 条件表达式条件表达式 循环体循环体 end 当表达式的结果为真时,反复执行循环体当表达式的结果为真时,反复执行循环体 内的语句,直到表达式的结果为假时,才退出内的语句,直到表达式的结果为假时,才退出 循环体循环体 36 例:使用while结构计算1+2+3+100 Matlab程序为:程序为: clear sum=0; i=0; while i100 i=i+1; sum=sum+i; end sum 运行结果:运行结果: sum =5050 37 try语句语句 语句格式为: try 程序模块1 catch 程序模块2 end try语句先试探性执行程
19、序模块1,如果程序模块1在执行过程中 出现错误,则将错误信息赋给保留的lasterr变量,并转去执行程序 模块2。 (3)其它控制语句)其它控制语句 38 例例:矩阵乘法运算要求两矩阵的维数相容,否则会出错。先矩阵乘法运算要求两矩阵的维数相容,否则会出错。先 求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 Matlab程序如下:程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因显示出错原因 39 lbreak语句语句 bre
20、ak语句用于终止循环的执行。当在循环体内执 行到该语句时,程序将跳出循环,继续执行循环语句的 下一语句。一般与if语句配合使用。 while 条件条件1 if 条件条件2 break; end end 40 lcontinue语句语句 continue语句控制跳过循环体中的某些语句。当在 循环体内执行到该语句时,程序将跳过循环体中所有剩 下的语句,继续下一次循环。一般与if语句配合使用。 while 条件条件1 if 条件条件2 continue; end end 41 例例 求求100,200之间第一个能被之间第一个能被21整除的整数。整除的整数。 程序如下程序如下: Matlab程序为:程
21、序为: for n=100:200 if rem(n,21)=0 continue end break end n 42 鸡兔同笼问题:鸡兔同笼问题:鸡和兔子关在一个笼子里,鸡和兔子关在一个笼子里, 已知共有头已知共有头36个,脚个,脚100个,编写程序求个,编写程序求 解笼内关了多少只兔子和多少只鸡?解笼内关了多少只兔子和多少只鸡? 43 Matlab程序为:程序为: clear chicken=1; while 1 if rem(100-chicken*2, 4)=0 end chicken=chicken+1; end chicken rabbit=(100-2*chicken)/4 4
22、4 3.4函数文件函数文件 l函数文件基本格式:函数文件基本格式: function 输出形参列表=函数名(输入形参列表) 注释说明语句段注释说明语句段 程序语句段程序语句段 %函数头函数头 %函数体函数体 l无返回值函数文件:无返回值函数文件: function 函数名(输入形参列表) 函数体 输出表输出表 是函数的返回值,若输出表中只有一项,则是函数的返回值,若输出表中只有一项,则 方括号可省略。方括号可省略。 45 l函数名必须与定义它的函数名必须与定义它的文件名文件名主名相同。主名相同。 l函数体是对各参数、局部变量和全局变量的操作。函数体是对各参数、局部变量和全局变量的操作。 函数体
23、内必须对输出表中的变量赋值。函数体内必须对输出表中的变量赋值。 l函数头与函数体之间可以有多个以符号函数头与函数体之间可以有多个以符号“”开始的开始的 注释行,说明函数的功能和使用方法。注释行,说明函数的功能和使用方法。 46 l函数调用的格式为:函数调用的格式为: 输出形参列表输出形参列表=函数名(输入形参列表)函数名(输入形参列表) 注意:注意:在函数调用时,会将输入实参依次传递给函数的在函数调用时,会将输入实参依次传递给函数的 形参以实现参数传递,然后执行函数功能,所以实参列形参以实现参数传递,然后执行函数功能,所以实参列 表和函数定义中的形参列表必须一致,这包括各实参出表和函数定义中的
24、形参列表必须一致,这包括各实参出 现的次序、个数要和定义时形参的次序、个数一致,否现的次序、个数要和定义时形参的次序、个数一致,否 则会出错。则会出错。 47 例:编写函数文件求半径为例:编写函数文件求半径为r的圆的面积和周长。的圆的面积和周长。 函数文件如下:函数文件如下: function s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 %2012年1月30日编 s=pi*r*r; p=2*pi*r;命令窗口中输入: s,p=fcircle
25、(12) 48 l函数嵌套函数嵌套 在在MATLAB中,函数可以嵌套调用,即一个函数可中,函数可以嵌套调用,即一个函数可 以调用别的函数,甚至调用它自身。一个函数调用它自以调用别的函数,甚至调用它自身。一个函数调用它自 身称为函数的递归调用。身称为函数的递归调用。 49 Matlab程序如下: function f=factor(n) if n b=testarg1(3) b = 9 b=testarg1(3,4) b = 7 51 l2变量作用域变量作用域 根据作用域的不同,可以将程序中的变量分为根据作用域的不同,可以将程序中的变量分为局部变局部变 量量和和全局变量全局变量。命令文件中的变量都是全局变量,函数文。命令文件中的变量都是全局变量,函数文 件中的内部变量都是局部变量,只能在本函数范围内使用,件中的内部变量都是局部变量,只能在本函数范围内使用, 不能直接被另一不能直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《数字电子技术基础》课程教学大纲
- 2024年低价物高价抵押合同范本
- 2024年出售叠加别墅合同范本
- 2024年承接土方垫资合同范本
- 浙江省宁波市镇海区部分学校2024-2025学年二年级上册语文期中试卷(含答案)
- 医药代表培训
- 培训拼音教学的课件
- 乡镇四所环保监察培训
- 卫生院秋季传染病培训
- 2024个人标准借款合同范本下载
- 《中药不良反应》PPT课件.ppt
- 混凝土搅拌站应急预案 (2)
- 中医医院综合治疗区环境形象建设范例
- 一些关于SMT的专业术语
- DGTJ08-2024-20xx《用户高压电气装置规范》
- 液压系统的课程设计说明书.doc
- 电气设备安装工程劳务单价表
- 《滚动轴承 》ppt课件
- 恙虫病-PPT课件
- 新人教版二年级上册数学第八单元教材分析
- 强制检定工作计量器具备案承诺书.doc
评论
0/150
提交评论