MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5

上传人:E**** 文档编号:89243949 上传时间:2019-05-22 格式:PPT 页数:54 大小:2.75MB
返回 下载 相关 举报
MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5_第1页
第1页 / 共54页
MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5_第2页
第2页 / 共54页
MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5_第3页
第3页 / 共54页
MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5_第4页
第4页 / 共54页
MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5》由会员分享,可在线阅读,更多相关《MATLAB教程及实训 第2版 教学课件 ppt 作者 曹弋 ppt5(54页珍藏版)》请在金锄头文库上搜索。

1、第5章 程序设计和M文件,5.1 程序控制 5.2 M文件结构 5.3 函数的使用 5.4函数句柄和inline对象 5.5 函数绘图 5.6 数值分析,5.1 程序控制 5.1.1 分支控制语句,1. if 结构 if 条件1 语句段1 elseif 条件2 语句段2 else 语句段n end,例5-1 根据函数计算结果,使用if结构, 函数为 。 x=input(Input X please. x=) %从键盘输入x的值 Input X please. x=10 if x=1 y=x.2-1 elseif -1x & x1 y=0*x else y=-x.2-1 end y = 99,2

2、. switch 结构 switch 表达式 case 值1 语句段1 case值2 语句段2 . otherwise 语句段n end 说明: 将表达式依次与case后面的值进行比较,满足值的范围就执行相应的语句段,如果都不满足则执行otherwise后面的语句段; 表达式只能是标量或字符串; case后面的值可以是标量、字符串或元胞数组,如果是元胞数组则将表达式与元胞数组的所有元素进行比较,只要某个元素与表达式相等,就执行其后的语句段; switch和end必须配对使用。,例5-2 使用switch结构判断学生成绩的等级,90分以上为优,8090为良,7080为中,6070为及格,60分以

3、下为不及格。 score=98; s1=fix(score/10); %取十位数 switch s1 case 9,10 s=优 case 8 s=良 case 7 s=中 case 6 s=及格 otherwise s=不及格 end,5.1.2 循环控制语句,1. for循环 for 循环变量=array 循环体 end 说明:array可以是向量也可以是矩阵,循环执行的次数就是array的列数,每次循环中循环变量依次取array的各列并执行循环体,直到array所有列取完。 for n=1:5 %循环5次 for n=-1:0.1:1 %循环21次 for n=linspace(-2*p

4、i,2*pi,5) %循环5次 a=eye(2,3); for n=a %循环3次,n为列向量,练习,例5-4 使用for循环计算并绘制x在-5,5范围内的三段曲线,函数为,y=; for x=-5:0.1:5 if x=1 y1=x.2-1; elseif -1x plot(x,y),2. while循环 while 条件表达式 循环体 end 例5-4 使用while循环计算f(x)=sin(x),x x=0.1; while x5 f=sin(x) x=x+log(x) end,练习,3. break和continue语句 (1)break语句 break语句使包含break的最内层fo

5、r或while循环强制终止,并立即跳出该循环结构,执行end后面的命令,break一般与if语句结合使用。 (2)continue语句 continue语句与break不同的是continue只结束本次for或while循环,而继续进行下次循环,continue一般也与if语句结合使用。,例5-6 使用for循环将字符串中的数值取出,遇到非数值则跳过。 str=The result is 100.; len=length(str); s=; for n=1:len if str(n)9|str(n)0 %非数值时 continue end s=s str(n); end,练习,5.1.3 错误

6、控制语句,try 语句段1 catch 语句段2 end 说明: 先试探地执行语句段1,如果出现错误则将错误信息赋给保留的lasterr变量,并放弃语句段1转而执行语句段2中的语句;如果语句段2正确则结束; 如果语句段1正确则不执行语句段2就结束; 当语句段1和语句段2都错误,则程序出错。 当错误控制结构运行结束后,可以调用lasterr函数查询出错信息,调用方法是“lastmsg,lastid=lasterr”,其中lastmsg保存出错信息,lastid保存错误类型。,例5-7 使用错误控制结构查看a*b的运算。, a=1 3 5; b=1 2 3; try c=a.*b catch c=

7、a.*b end lastmsg,lastid=lasterr 结果: c = 1 6 15 lastmsg = Error using = times Matrix dimensions must agree. lastid = MATLAB:dimagree,5.1.4 流程控制命令,1. return命令 return命令用于提前结束程序的执行,并立即返回到上一级调用函数或等待键盘输入命令,一般用于遇到特殊情况需要立即退出程序或终止键盘方式。 应注意当程序进入死循环时,则按Ctrl+break键来终止程序的运行。 2. keyboard命令 keyboard命令用来使程序暂停运行,等待键

8、盘命令,命令窗口出现“K”提示符,当键盘输入“return”后,程序才继续运行。keyboard命令可以用来在程序调试或程序执行时使用。 3. input命令 r=input(str,s)%从键盘中输入数据保存到变量r。,4. disp命令 disp命令是较常用的显示命令,常用来显示字符串型的信息提示。 5. pause命令 pause命令用来使程序暂停运行,当用户按任意键才继续执行。 pause(n) %暂停n秒 6 warning和error命令 在程序中可以给出错误或警告信息以提醒用户。 warning(message) %显示警告信息 error(message) %显示错误信息,练习

9、,5.2 M文件结构,MATLAB R2010a的程序如果要保存则使用扩展名是“.m”的M文件,M文件有两种即M脚本文件(Script File)和M函数文件(Function File)。,5.2.1 M文件的一般结构,1. 函数声明行 函数声明行是在M函数文件的第一行,只有M函数文件必须有,以“function”引导并指定函数名、输入和输出参数,M脚本文件没有函数声明行。 2. H1行 H1行是帮助文字的第一行。 3. 帮助文本 4. 程序代码 程序代码由MATLAB语句和注释语句构成。,在命令窗口中使用lookfor和help命令查找“ex5_9”的信息,则lookfor只显示H1行的信

10、息,而help命令显示H1行和其它注释文本 .,5.2.2 M脚本文件和M函数文件,1. M脚本文件 M脚本文件的说明如下: (1)MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行; (2)M脚本文件运行产生的变量都驻留在MATLAB的工作空间中,可以很方便地查看变量,在命令窗口中运行的命令都可以使用这些变量; (3)脚本文件的命令可以访问工作空间的所有数据,因此要注意避免工作空间和脚本文件中的同名变量相互覆盖,一般在M脚本文件的开头使用“clear”命令清除工作空间的变量。,例5-8 在M文件编辑调试器窗口中编写M脚本文件得出10-50范

11、围内的所有素数。 %EX5_8 计算10-50内的素数 clear y1=primes(50); %获得50以内的所有素数 n=length(primes(10); %获得10以内素数的个数 y=y1(n+1:end) 在命令窗口中输入: ex5_8 y = 11 13 17 19 23 29 31 37 41 43 47 在工作空间中就可以查看到变量y1、n和y,并可以修改和使用这些变量。,2. M函数文件 M函数文件的说明如下: (1)M函数文件中的函数声明行是必不可少的; (2)M函数文件在运行过程中产生的变量都存放在函数本身的工作空间中,函数的工作空间是独立的、临时的,随具体的M函数文

12、件调用而产生并随调用结束而删除,在MATLAB运行过程中如果运行多个函数则产生多个临时的函数空间; (3)当文件执行完最后一条命令或遇到“return”命令时就结束函数文件的运行,同时函数工作空间的变量被清除; (4)一个M函数文件至少要定义一个函数。,函数声明行的格式如下: function 输出参数列表 = 函数名(输入参数列表) 说明: 函数名是函数的名称,保存时最好函数名与文件名一致,当不一致时,MATLAB以文件名为准; 输入参数列表是函数接收的输入参数,多个参数间用“,”分隔; 输出参数列表是函数运算的结果。,例5-9 将例5-7的计算行向量乘积的运算使用M函数文件保存。 func

13、tion c=ex5_9(a,b) %EX5_9(a,b) returns the product of a and b % c is the product % a is the multiplier % b is the multiplicand % copyright 2007-10-01 try c=a.*b; catch c=a.*b; end,调用该函数: z=ex5_9(1 2 3,4 5 6) z = 4 10 18,5.3 函数的使用 5.3.1 主函数和子函数,1. 主函数 一个M函数文件中可以包含一个或多个函数,主函数是出现在文件最上方的函数,即第一行声明的函数,一个M文

14、件只能有一个主函数,通常主函数名与M函数文件名相同。 2. 子函数 (1)子函数的次序无任何限制; (2)子函数只能被同一文件中的函数(主函数或子函数)调用,不能被其它文件的函数调用; (3)同一文件的主函数和子函数运行时的工作空间是相互独立的。 例5-10,5.3.2 函数的输入输出参数,1. 参数的传递 函数的参数传递是将主调函数中的变量值传给被调函数的输入参数 (1)函数参数传递的是数值 (2)被调函数的输入参数是存放在函数的工作空间中,与MATLAB的工作空间是独立的,当调用结束时函数的工作空间被清除,输入参数也被清除。,2. 输入输出参数的个数 (1)nargin和nargout函数

15、 nargin(fun) %获取函数fun的输入参数个数 nargout(fun) %获取函数fun的输出参数个数 说明:fun是函数名,可以省略,当nargin和nargout函数在函数体内时fun可省略,在函数外时fun不省略。,例5-11 当输入参数个数变化时使用nargin函数绘制不同线型的曲线。 function n=ex5_11(s1,s2) x=0:10; y=nargin*ones(11,1); hold on if nargin=0 plot(x,y) %实线曲线 elseif nargin=1 plot(x,y,s1) else plot(x,y,s1 s2) end,调用

16、命令: ex5_11 ex5_11(r) ex5_11(k,o) nargin(ex5_11) ans = 2 ex5_11(g,:,p),(2)varargin和varargout函数 varargin和varargout函数将函数调用时实际传递的参数构成元胞数组,通过访问元胞数组中各元素内容来获得输入输出变量。 function y = fun(varargin)%输入参数为varargin的函数fun function varargout = fun(x)%输出参数为varargout的函数fun,例5-12 根据输入参数的个数将例5-11中参数个数使用varargin和varargout函数,绘制不同线型的曲线,绘制的曲线与图5-6相同。 function varargout=ex5_12(varargin) x=0:10;

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

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

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