《MATLAB编程与工程应用——第4章_MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《MATLAB编程与工程应用——第4章_MATLAB程序设计.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB编程与工程应用教教 师师:曾晓东:曾晓东电电 话话:1367900720113679007201E_mailE_mail:QQQQ:241747139:241747139MATLAB编程与工程应用第3章 MATLAB程序设计第第4 4章章 MATLABMATLAB程序设计程序设计4.1 M4.1 M文件文件4.2 4.2 程序控制结构程序控制结构4.3 4.3 函数文件函数文件4.4 4.4 程序举例程序举例4.5 4.5 程序调试程序调试第3章 MATLAB程序设计4.1 M4.1 M文件文件一、一、M M文件概述文件概述用MATLAB语言编写的程序,称为M M文件文件。M文件可
2、以根据调用方式的不同分为两类:命令文件命令文件(Script File)函数文件函数文件(Function File)。二、二、M M文件的建立和打开文件的建立和打开M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。第3章 MATLAB程序设计4.1 M4.1 M文件文件1 1建立新的建立新的M M文件文件 (1)(1)菜单操作菜单操作。从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口。(2)(2)命令操作命令操作。在MATLAB命令窗口输入命令edit,启动M
3、ATLAB文本编辑器后,输入M文件的内容并存盘。(3)(3)命令按钮操作命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。第3章 MATLAB程序设计4.1 M4.1 M文件文件2 2打开已有的打开已有的M M文件文件 (1)(1)菜单操作菜单操作。从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘。(2)(2)命令操作命令操作。在MATLAB命令窗口输入命令:edit 文件名,则
4、打开指定的M文件。(3)(3)命令按钮操作命令按钮操作。单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。第3章 MATLAB程序设计4.2 4.2 程序控制结构程序控制结构一、顺序结构一、顺序结构1.input1.input函数函数A=input(A=input(提示信息,选项提示信息,选项);注:s选项,则允许用户输入一个字符串。例如想输入一个人的姓名,可采用命令xm=input(Whats your name:,s)【例例4.14.1】求一元二次方程求一元二次方程a a2 2+bx+c=0+bx+c=0的根。的根。(exp3_1.mexp
5、3_1.m)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)第3章 MATLAB程序设计一、顺序结构一、顺序结构2.2.dispdisp函数函数dispdisp(输出项输出项)输出项为字符串或矩阵例A=Hello,MATLAB;disp(A)输出为:Hello,MATLAB第3章 MATLAB程序设计4.2 4.2 程序控制结构程序控制结构二、选择结构二、选择结构1.1.1.1.ifif,elseelse,elseifelseif语句语句1)1)1)1)if(if(逻
6、辑表达式逻辑表达式)执行语句执行语句endend2)2)2)2)if(if(逻辑表达式逻辑表达式)执行语句执行语句1 1elseelse执行语句执行语句2 2endend3)3)3)3)if(if(逻辑表达式逻辑表达式1)1)执行语句执行语句1 1 elseifelseif(逻辑表达式逻辑表达式2)2)执行语句执行语句2 2 else else执行语句执行语句n n end end第3章 MATLAB程序设计二、选择结构二、选择结构【例例4.24.2】:输入三角形的三条边,求面积。:输入三角形的三条边,求面积。(exp3_2.mexp3_2.m)A=input(请输入三角形的三条边:);if(
7、A(1)+A(2)A(3))&(A(1)+A(3)A(2))&(A(2)+A(3)A(1))p=(A(1)+A(2)+A(3)/2;s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3);disp(s);else disp(不能构成一个三角形。)end运行:请输入三角形的三条边:4 5 6 9.9216第3章 MATLAB程序设计二、选择结构二、选择结构【例例4.34.3】:输入一个字符,若为大写字母,则输出其后继输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。符则原样输出。(exp
8、3_3.mexp3_3.m)c=input(请输入字符,s);if c=A&c=a&c=z disp(setstr(abs(c)-1);else disp(c);end第3章 MATLAB程序设计二、选择结构二、选择结构2.switch2.switch语句语句格式格式:switch(表达式)表达式可以是标量或字符串case 值1语句1case 值2语句2otherwise语句nend执执行行方方式式:表达式的值和哪种情况(case)的值相同,就执行哪种情况中的语句,如果不同,则执行otherwise中的 语 句。格 式 中 也 可 以 不 包 括otherwise,这时如果表达式的值与列出的各
9、种情况都不相同,则继续向下执行。第3章 MATLAB程序设计二、选择结构二、选择结构【例例4.44.4】根据变量根据变量numnum的值来决定显示的内容。的值来决定显示的内容。(exp3_4.mexp3_4.m)num=input(请输入一个数);switch(num)case-1disp(I am a teacher.);case 0disp(I am a student.);case 1disp(You are a teacher.);otherwisedisp(You are a student.);end第3章 MATLAB程序设计二、选择结构二、选择结构3 3trytry语句语句格式
10、:trytry 语句组语句组1 1catchcatch 语句组语句组2 2endendtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。第3章 MATLAB程序设计二、选择结构二、选择结构【例例4.54.5】矩阵乘法运算要求两矩阵的维数相容,否则会出矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。的点乘。(exp3_5.m)(exp3_5.m)程序如下:A=1,2,3;4,5,6;B=7,8,9;10,11,12;try
11、 C=A*B;catch C=A.*B;endClasterr%显示出错原因第3章 MATLAB程序设计4.2 4.2 程序控制结构程序控制结构三、循环语句1.for1.for语句语句(1)for(1)for 循环变量循环变量=表达式表达式1:1:表达式表达式3:3:表达式表达式2 2循环语句组循环语句组 EndEnd(2)for(2)for 循环变量循环变量=数组范围数组范围循环语句组循环语句组 endend步长缺省值为1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套使用。书写格式不必太过于拘
12、泥,在Editor编辑器中会自动进行处理。第3章 MATLAB程序设计三、循环语句注意:注意:1)for1)for循环不能用循环不能用forfor循环内重新赋值循环变量循环内重新赋值循环变量n n来终止来终止for n=1:10 x(n)=sin(n*pi/10);n=10;end2)2)语句语句1:101:10是标准的是标准的MATLABMATLAB数组创建语句,在数组创建语句,在FORFOR循环内接受循环内接受任何有效的任何有效的MATLABMATLAB数组。数组。data=3 9 45 6;7 16 1 5;for n=data x=n(1)-n(2)end 第3章 MATLAB程序设计
13、三、循环语句3)for 循环可按需要嵌套for n=1:5 for m=5:-1:1S(n,m)=n2+m2;end disp(n)endS=2 5 10 17 26S=2 5 10 17 26 5 8 13 20 29 5 8 13 20 29 10 13 18 25 34 10 13 18 25 34 17 20 25 32 41 17 20 25 32 41 26 29 34 41 50 26 29 34 41 504)当有一个等效的数组来解给定的问题时,应避免用FOR循环,例如,上面的注意1中的例子可重写为n=1:10;n=1:10;x=sin(n*pi/10);x=sin(n*pi/
14、10);5)为了得到最大的速度,在for循环(while循环)被执行之前,应预先分配数组。如在注意3中,应在循环前执行S=zeros(5);S=zeros(5);第3章 MATLAB程序设计三、循环语句2 2、whilewhile循环语句循环语句while(while(表达式表达式)循环体循环体endendn若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。nWhile循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。第3章 MATLAB程序设计三、循环语句【例例3.63.6】
15、:计算下式的值:计算下式的值(exp3_6_1.m,exp3_6_2.m)(1 1)使用)使用forfor循环循环sum=0;sum=0;for I=1:1000for I=1:1000sum=sum+I2+2*I;sum=sum+I2+2*I;endend(2)(2)使用使用whilewhile循环循环sum=0;sum=0;I=1;I=1;while(I=1000)while(I1000)if(sum1000)break;break;endendendenddisplay(n)display(n)sum=0;sum=0;n=0;n=0;while(sum=1000)while(sum=10
16、00)n=n+1;n=n+1;sum=sum+n2+2*n;sum=sum+n2+2*n;endenddisplay(n)display(n)第3章 MATLAB程序设计四、程序流控制四、程序流控制2.2.continuecontinue语句语句跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。3.return()3.return()函数函数作用是中断函数的执行,返回上级调用函数。return()函数指令既可以用在循环体内,也可用在非循环体内。4.pause()4.pause()函数函数暂停指令。运行程序时,到pause()函数指令执行后,程
17、序将暂停,等待用户敲任一键后继续执行。pause(n)暂停几秒后程序继续执行若要强行中止程序的运行可使用Ctrl+CCtrl+C命令。第3章 MATLAB程序设计4.3 4.3 函数文件函数文件一、函数文件的基本结构函数文件由function语句引导,其基本结构为:function function 输出形参表输出形参表=函数名函数名(输入形参表输入形参表)注释说明部分注释说明部分 函数体语句函数体语句其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。函数名必须与文件名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个
18、时,则应该用方括号括起来。第3章 MATLAB程序设计一、函数文件的基本结构【例例3.83.8】:编写函数文件求半径为编写函数文件求半径为r r的圆的面积和周长。的圆的面积和周长。(fcircle.m)function s,p=fcircle(r)%fcircle 半径为r的圆的面积和周长%r 圆半径%s 圆面积%p 圆周长%编制时间:2007年8月30日s=pi*r*r;p=2*pi*r;第3章 MATLAB程序设计4.3 4.3 函数文件函数文件二、函数调用二、函数调用函数调用的一般格式是:输出实参表输出实参表=函数名函数名(输入实参表输入实参表)要注意的是,函数调用时各实参出现的顺序、个
19、数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。在MATLAB中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递归调用。第3章 MATLAB程序设计二、函数调用二、函数调用【例例3.93.9】:利用函数的递归调用,求利用函数的递归调用,求n n!。!。n!本身就是以递归的形式定义的:n!=n*(n-1)!显然,求n!需要求(n-1)!,这时可采用递归调用(factor.m)function f=factor(n)if n2)求Fibonacci数列的第20项。(Fib
20、onacci.m)第3章 MATLAB程序设计4.5 4.5 程序调试程序调试一、程序调试概述一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等。程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。第3章 MATLAB程序设计4.5 4.5 程序调试程序调试二、调试器1 1DebugDebug菜单项菜单项该菜单项用于程序调试,需要与Breakpoints菜单项配合使用。2 2BreakpointsBreakpoints菜单项菜单项该菜单项共有6个菜单命令,前两个是用于在程序中设置和清除断点的,后4个是设置停止条件的,用于临时停止M文件的执行,并给用户一个检查局部变量的机会,相当于在M文件指定的行号前加入了一个keyboard命令。第3章 MATLAB程序设计4.5 4.5 程序调试程序调试三、调试命令 除了采用调试器调试程序外,MATLAB还提供了一些命令用于程序调试。命令的功能和调试器菜单命令类似,具体使用方法请查询MATLAB帮助文档。第3章 MATLAB程序设计