MATLAB教学课件第4讲程序设计

上传人:E**** 文档编号:91242418 上传时间:2019-06-26 格式:PPT 页数:43 大小:304KB
返回 下载 相关 举报
MATLAB教学课件第4讲程序设计_第1页
第1页 / 共43页
MATLAB教学课件第4讲程序设计_第2页
第2页 / 共43页
MATLAB教学课件第4讲程序设计_第3页
第3页 / 共43页
MATLAB教学课件第4讲程序设计_第4页
第4页 / 共43页
MATLAB教学课件第4讲程序设计_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《MATLAB教学课件第4讲程序设计》由会员分享,可在线阅读,更多相关《MATLAB教学课件第4讲程序设计(43页珍藏版)》请在金锄头文库上搜索。

1、第四讲 MATLAB程序设计,一M文件,MATLAB有两种工作方式:,交互式的命令行工作方式,M文件的程序工作方式,M文件,用 Matlab 语言编写的程序称为 M文件,以“.m”为扩展名,M文件根据调用方式的不同可以分为两类:,M文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法,Script file:命令文件/脚本文件,Function file:函数文件,事实上,Matlab 提供的内部函数以及各种工具箱,都是利用Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱,命令文件没有输入参数,也不返回输出参数; 函数文

2、件可以带输入参数,也可以返回输出参数,命令文件对 Matlab 当前工作空间的变量进行操作,文件中所有命令的执行结果也返回到当前工作空间中; 函数文件中定义的变量为局部变量,当函数执行完后,这些变量被清除,命令文件可以直接运行,在 Matlab 命令窗口中输入文件的名字就会顺序执行文件中的命令; 函数文件不能直接运行,要以函数调用的方式来调用,两类M文件的区别,(1) 命令文件:输入以下内容并以文件名 f2cs.m 存盘,clear; %清除当前工作空间中的变量 f=input(Please input Fahrenheit temperature:); c=5*(f-32)/9; fprin

3、tf(The Centigrade Temperature is %gn, c);,在Matlab命令窗口中输入 f2cs ,即可执行该命令文件。不用输入参数,也没有输出参数,执行完后,变量 c、f 仍保留在工作空间。(可用whos查看),举例,例:分别用命令文件和函数文件将华氏温度转化为摄氏温度。,函数文件:建立函数文件 f2cf.m ,内容如下:,function c=f2cf(f) c=5*(f-32)/9;,在Matlab命令窗口中输入, f2cf(200),调用该函数时,既有输入参数,又有输出参数;函数调用完后,变量 c、f 没有被保留在工作空间。,M文件的建立与打开,M文件是一个文

4、本文件,可以用任何文本编辑器来建立和编辑,而一般使用 Matlab 自带的文本编辑器。,启动Matlab文本编辑器有三种方法:,打开已有的M文件:,1)菜单操作(open) 2)命令操作(edit 文件名) 3)命令按钮(快捷键) 4)双击 M文件,1)菜单操作(New) 2)命令操作(edit) 3)命令按钮(快捷键),将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令,命令文件,例 建立一个命令文件将变量a,b的值互换。,eem文件: a=1:9; b=11,12,13;14,15,16;17,18,19; c=a;a=b;b

5、=c; a a = 11 12 13 14 15 16 17 18 19 b b = 1 2 3 4 5 6 7 8 9 在MATLAB的命令窗口中输入ee,将会执行该命令文件。,命令文件,函数文件,function 输出形参表 = 函数名(输入行参表) 注释说明部分(可选) 函数体语句(必须),其中以 function开始的一行为引导行,表示该 M文件是函数文件。,特别提示:添加注释是个良好的编程习惯。,函数文件名与函数名一定要统一,函数名的命名规则与变量名相同(必须以字母开头)。,函数文件由 function 语句引导,其基本结构为:,函数文件的基本结构,编写函数文件求半径为r的圆的面积和

6、周长。 (fcircle.m) function s,p=fcircle(r) %fcircle 半径为r的圆的面积和周长 %r 圆半径 %s 圆面积 %p 圆周长 %编制时间:2010年8月30日 s=pi*r*r; p=2*pi*r;,几点说明,输入与输出参数,当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。,函数文件内定义的变量仅在函数文件内部起作用, 当函数文件执行完成后,这些内部变量将被清除,当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。,函数调用,函数调用的一般格式,函数文件编好后,就可以被其它 M文件调用了。,输出实参表 =

7、函数名(输入实参表),函数调用时,实参的顺序、个数必须与函数定义时的形参的顺序、个数一致。,函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用。,举例(一),% 函数文件 tran.m function gama,theta=tran(x,y) gama=sqrt(x*x+y*y); theta=atan(y/x);,% 调用tran.m的命令文件main.m x=input(Please input x=:); y=input(Please input y=:); gam,the=tran(x,y);,例:利用函数文件,实现直角坐标(x,y)与极坐标(,)

8、之间的转换。,举例(二),% 函数文件 factor.m function f=factor(n) if (n=1) f=1; else f=n*factor(n-1); end,% 命令文件 main.m for i=1:5 fac(i)=factor(i); end,例:利用函数的递归调用计算 n!,程序运行结果是: fac = 1 2 6 24 120,程序的调试,1.MATLAB的主程序的调试: MATLAB的查错能力很强,加上工作空间中变量的保存和显示功能不需要专门的调试命令,因此,主程序的调试很方便地进行。 2.函数程序的调试: 因为在函数程序中出错而停机时,其变量不作保存。虽然它

9、也会指出出错的语句,但因为子程序中的变量(局部变量)在程序执行完毕后会自动消失,其它现场数据又无记录,会给调试带来很大困难。可采用下列措施:,程序的调试,(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错的依据。 (2)在子程序中适当部位加keyboard命令,到了此处,系统会暂停而等待用户键入命令。这时子程序中的变量还存于工作空间中,可以对它进行检查。,(3)将函数文件的第一行前加“%”号,使它成为程序文件来作初步调试。第一行中的输入变元,可改用input或赋值语句来输入,调试好后再改回为函数文件。,二数据的输入输出,二数据的输入输出,数据的输入: input,A=input(提示

10、信息);其中提示信息为字符串,A=input(提示信息,s);允许用户输入字符串,name=input(Whats your name? ,s),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) 将该程序以aa.m文件存盘,然后运行aa.m文件。,【例】 求一元二次方程a2 +bx+c=0的根。,数据的输出: disp,disp(X); 其中 X 是字符串或矩阵,程序的暂停: pause,pause(n);,若想强行中止程序的运行,可以使用 Ctrl+c,其中

11、 n 是延迟时间,以秒为单位;也可以直接使用pause,则将暂停程序,直到用户按任一键后继续。,pause off: 屏蔽程序中所有 pause 的作用; pause on: 打开 pause 的作用。,二数据的输入输出,例如 A=Hello,MATLAB; disp(A) 输出为: Hello,MATLAB,三程序控制结构,三程序控制结构,程序控制结构有三种 顺序结构 选择结构 循环结构,程序控制结构,任何复杂的程序都可以由 这三种基本结构构成。,(一)顺序结构,按排列顺序依次执行,直到程序的最后一个语句。 这是最简单的一种程序结构,一般涉及数据的输入、数据的计算或处理、数据的输出等。,顺序

12、结构,根据给定的条件是否成立而分别执行不同的语句,单分支,if expr (条件) statement (语句组) end,if 语句,(二)选择结构,Matlab 用于实现选择结构的语句有 if 和 switch 语句,双分支,if expr (条件) statement1(语句组1) else statement2(语句组2) end,多分支:,if expr1(条件 1) statement1(语句组 1) elseif expr2(条件 2) statement2(语句组 2) . . elseif exprm(条件 m) statementm(语句组 m) else statemen

13、t(语句组) end,if 语句,elseif 可以出现多个,但 else 只能有一个!,switch 语句,根据表达式的取值不同,分别执行不同的语句。,switch expr(表达式) case expr1(表达式 1) statement1(语句组 1) case expr2(表达式 2) statement2(语句组 2) . . case exprm(表达式 m) statementm(语句组 m) otherwise statement (语句组) end,当任意一个分支的语句执行完后,直接执行 switch 语句后面的语句。,switch 子句后面的表达式可以是一个标量或字符串;c

14、ase 子句后面的表达式可以是标量或字符串,也可以是一个单元(cell),此时表达式的值等于该单元中的某个元素时,执行相应的语句组。,switch 语句(续),【例】 输入三角形的三条边,求面积。,A=input(请输入三角形的三条边:); if A(1)+A(2)A(3) else disp(不能构成一个三角形。) end 运行: 请输入三角形的三条边:4 5 6 9.9216,【例】 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。,clc c=input(请输入字符:,s); if c=A end,【例】根据变量 num 的值来决定显

15、示的内容。,clc num=input(请输入一个数:); switch num case -1 disp(I am a teacher.); case 0 disp(I am a student.); case 1 disp(You are a teacher.); otherwise disp(You are a student.); end,选择结构,try语句 格式: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。,选择结构,【例】矩阵乘法运算要求两矩阵的维

16、数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: 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 %显示出错原因,三、循环结构,循环结构是按照给定的条件,重复执行指定的语句,for 语句,for variable = expr(表达式) statement(循环体语句) end,循环变量,expr 可以是行向量,也可以是矩阵。 循环变量=表达式1:表达式2:表达式3,Matlab 用于实现循环结构的语句有for语句和while语句,在 Matlab 编程中,采用循环会降低程序的执行速度,应尽量避免使用,或用其它方式代替,如向量运算等。,三、循环语句,注意: 1)for循环不能用f

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

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

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