第3章_MATLAB程序设计.ppt

上传人:bao****ty 文档编号:143828025 上传时间:2020-09-02 格式:PPT 页数:54 大小:550.50KB
返回 下载 相关 举报
第3章_MATLAB程序设计.ppt_第1页
第1页 / 共54页
第3章_MATLAB程序设计.ppt_第2页
第2页 / 共54页
第3章_MATLAB程序设计.ppt_第3页
第3页 / 共54页
第3章_MATLAB程序设计.ppt_第4页
第4页 / 共54页
第3章_MATLAB程序设计.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第3章_MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章_MATLAB程序设计.ppt(54页珍藏版)》请在金锄头文库上搜索。

1、1,第3章 MATLAB程序设计,2,上一节回顾,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,本章目标,掌握MATLAB的几种基本控制转移语句 学会使用M文件进行编程 具备对较复杂问题的编程求解能力,5,主要内容,3.1 M文件 3.2 MATLAB程序结构 3.3 其它流程控制语句 3.4 函数文件 3.5 变量参数传递 3.6 M文件调试,6,MATLAB提供的强大的数学函数库来处理较为复杂的数值数据问题

2、。仅靠调用这些基本的函数库来处理特殊要求的问题,还是不够的。 需要利用程序设计语言来编制专门的程序,由程序来求解问题。 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁、可读性很强、调试容易。,7,3.1 M文件,MATLAB工作模式 命令行方式 程序文件驱动模式 M文件:以.m为扩展名的文本文件。一个M文件包含许多连续的MATLAB命令,它也可以引用其他的M文件,可以递归。 从功能上看,M文件分为: 命令文件(Script File) 函数文件(Function File) (3.4讲解),8,命令文件是命令和函数的组合,执行命令文件不需要输入参数,也

3、没有输出参数,MATLAB自动按照顺序执行命令文件中的命令,命令文件的变量保存在工作空间中。 函数文件是以function语句为引导的M文件,可以接受输入参数和返回输出参数,函数文件的内部变量是临时的局部变量,函数运行结束后,局部变量被释放。,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,M文件建立

4、、编辑,file-new-M-File,12,命令文件,又称为脚本文件,是一串指令的集合。 运行M文件 在文本编辑器中选Debug/Run 命令或按F5键或在命令窗口使用命令行调用,用户只需键入该命令文件的文件名,系统就会自动逐行执行该文件中的各条语句。 适用于立即得到结果的小规模运算。,13,数据输入输出,1. input命令 从键盘输入数据,该函数的调用格式为: A=input(提示信息,选项) 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用s选项,则允许用户输入一个字符串。 命令执行后,在屏幕上显示出提示信息的文本并等待终端的输入,14,例: 输

5、入一个小写字母,将其变成大写字母 Matlab程序为: ch=input(请输入一个字符,s); if ch=a end ch,15,2.disp命令 数据的输出,其调用格式为 disp (输出项) 其中:输出项既可以为字符串,也可以为矩阵。,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,3. pause

6、命令 程序的暂停,其调用格式为: pause(延迟秒数) 如果省略延迟时间,直接使用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(x(2);,19,3.2 Matlab程序结构,按照

7、程序设计的观点, 任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合来实现: 顺序结构 选择结构 循环结构,20,程序模块1,程序模块2,MATLAB中实现顺序结构的方法非常简单: 只需将程序语句顺序排列即可,1、顺序结构 按程序语句或模块在执行流中的顺序逐个执行。,1、顺序结构,21,在MATLAB中,选择结构由两种语句结构实现: if语句 switch语句,条件,程序模块1,成立,不成立,程序模块2,程序按设定的条件实现执行流的多路分支,2、选择结构,22,(1)if语句,if 表达式 程序模块1 else 程序模块2 end 当表达式成立(为真)时,执行程序模块1,否则执行程序

8、模块2,程序模块1或程序模块2执行后,再执行if语句的后继语句。,23,例 计算分段函数的值。 程序如下: x=input(请输入x的值:); % 在屏幕上显示字符串文本, if x=0 % 并等待终端输入 y= (x+sqrt(pi)/exp(2); else y=log(x+sqrt(1+x*x)/2; end y,24,if语句的两种变形,(1)单分支if语句:只有一个分支的选择结构 if 表达式 程序模块 end,(2) 多分支if语句:超过2个的选择 if 表达式1 程序模块1 elseif 表达式2 程序模块2 elseif 表达式n 程序模块n else 程序模块n+1 end,

9、25,例:将百分制的学生成绩转换为五级制的成绩输出,clear n=input(请输入成绩: ); if n=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(标量/字符串/矩阵) 程序模块1; case 数值2 程序模块2; otherwise 程序模块n end,

10、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,28,例 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 100

11、0price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 输入所售商品的价格,求其实际销售价格。,29,price=input(请输入商品价格); switch fix(price/100) case 0,1 %价格小于200 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 num2c

12、ell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格,Matlab程序如下:,30,3、循环结构,在MATLAB中,循环结构可以由两种语句结构实现: for语句循环结构 while语句循环结构,程序模块,不成立,成立,条件,按给定的条件重复地执行指定的程序段或模块。,31,(1)for语句循环结构,for语句格式: for 循环变量起始值:步长:终止值 循环体 end 步长为1时,可以省略。,32,for:构造指定重复次

13、数的循环结构 如: for x=0:pi/10:pi 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,Matlab程序(向量): n=100; i=1:n; f=1./i.2; y=sum(f),35,(2)while语句循环结构,while 条件表达式 循环体

14、 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语句先试探性执行程序模块1,如果程序模块1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行程序模块2。,(3)其它控制语句,38,例:矩阵乘法运算要求两矩阵的维数相容,否则会

15、出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 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,break语句 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。一般与if语句配合使用。 while 条件1 if 条件2 break; end end,40,continue语句 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。一般与if语句配合使用。 while 条件1 if 条件2 continue; end end,41,例 求100,200之间第一个能被21整除的整数。 程序如下: Matlab程序为: 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-c

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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