《第3章程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章程序设计.ppt(69页珍藏版)》请在优知文库上搜索。
1、第3章 MATLAB程序设计uM文件的概念与基本操作u MATLAB程序控制结构u MATLAB函数文件u MATLAB程序调试3.1 M文件文件3.1.1 M文件的分类文件的分类 用用MATLAB语言编写的程序,称为语言编写的程序,称为M文件。文件。M文件可以根据调用方式的不同分为两类:文件可以根据调用方式的不同分为两类: (1)命令文件:)命令文件:Script File,也称为脚本文件;,也称为脚本文件; (2)函数文件:)函数文件:Function File。 函数文件不能被执行,只能被调用,而脚本函数文件不能被执行,只能被调用,而脚本文件即可以被执行,也可以被调用。文件即可以被执行,
2、也可以被调用。例例3-1 分别建立命令文件和函数文件,将华氏温度分别建立命令文件和函数文件,将华氏温度f转转换为摄氏温度换为摄氏温度c。(1)建立命令文件并以文件名)建立命令文件并以文件名f2c.m存盘。存盘。clear, clc; %清除工作空间中的变量清除工作空间中的变量f=input(华氏温度华氏温度f=?);c=5*(f-32)/9然后在然后在MATLAB的命令窗口中输入的命令窗口中输入f2c,执行情况为:,执行情况为: f2c华氏温度华氏温度f=?73c = 22.7778(2)建立函数文件)建立函数文件f2c1.m。function c=f2c1(f)c=5*(f-32)/9;然后
3、在然后在MATLAB的命令窗口调用该函数文件:的命令窗口调用该函数文件:clear, clcc=f2c1(73)c = 22.7778f=input(华氏温度华氏温度f=?); c=f2c1(f)华氏温度华氏温度f=?73c = 22.77783.1.2 M文件的建立与打开文件的建立与打开1建立新的建立新的M文件文件 有有3种方法:种方法: (1) 菜单操作菜单操作 从从File菜单中选择菜单中选择New,再选择,再选择M-file。 (2) 命令操作命令操作 在在MATLAB命令窗口输入命令命令窗口输入命令 edit (3) 命令按钮操作命令按钮操作 单击单击New M-File命令按钮命令
4、按钮2打开已有的打开已有的M文件文件 也有也有3种方法:种方法: (1) 菜单操作菜单操作 从从MATLAB主窗口的主窗口的File菜单中选择菜单中选择Open。 (2) 命令操作命令操作 在在MATLAB命令窗口输入命令:命令窗口输入命令: edit 文件名文件名 (3) 命令按钮操作命令按钮操作 单击单击Open File命令按钮。命令按钮。3.2 程序控制结构程序控制结构3.2.1 顺序结构顺序结构1数据的输出数据的输出 MATLAB提供的命令窗口输出函数主要有提供的命令窗口输出函数主要有disp函数,其函数,其调用格式为:调用格式为: disp(输出项输出项) 其中输出项既可以为表达式
5、或字符串。其中输出项既可以为表达式或字符串。 DISP(X) displays the array, without printing the array name.a=1; disp(a) 13.2 程序控制结构程序控制结构3.2.1 顺序结构顺序结构2数据的输入数据的输入 从键盘输入数据,则可以使用从键盘输入数据,则可以使用input函数来进行,该函数函数来进行,该函数的调用格式为:的调用格式为: A=input(提示信息提示信息) 或或 A=input(提示信息提示信息 ,s) 采用采用s选项,则不能输入定界符;否则必须输入。选项,则不能输入定界符;否则必须输入。 xm=input(Wh
6、ats your name?, s); disp(My name is ,xm,.)Whats your name?wang fangMy name is wang fang. 例例3-2 输入输入x, y的值,并将它们的值互换后输出。的值,并将它们的值互换后输出。 程序如下:程序如下: x=input(x=?); y=input(y=?); z=x; x=y; y=z; disp(x), disp(y) disp(x=, num2str(x); y=, num2str(y)3程序执行的暂停程序执行的暂停 可以使用可以使用pause函数,其调用格式为:函数,其调用格式为: pause(延迟秒数
7、延迟秒数) 或或 pause 直接使用直接使用pause,则将暂停程序,直到用户按,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运任一键后程序继续执行。若要强行中止程序的运行可使用行可使用Ctrl+C命令。命令。disp(Press any key to continue!), pausePress any key to continue! 例例3-3 编写倒计时程序编写倒计时程序 程序如下:程序如下:clear,clcinput(Press any key to start!),clc, disp(倒计时倒计时10秒:秒:10)pause(1);clc,disp(倒计时倒
8、计时10秒:秒:9)pause(1);clc,disp(倒计时倒计时10秒:秒:8)pause(1);clc,disp(倒计时倒计时10秒:秒:7)pause(1);clc,disp(倒计时倒计时10秒:秒:6)pause(1);clc,disp(倒计时倒计时10秒:秒:5)pause(1);clc,disp(倒计时倒计时10秒:秒:4)pause(1);clc,disp(倒计时倒计时10秒:秒:3) pause(1);clc,disp(倒计时倒计时10秒:秒:2)pause(1);clc,disp(倒计时倒计时10秒:秒:1)pause(1);clc,disp(倒计时倒计时10秒:秒:0)
9、load gong, sound(y,Fs) %锣声锣声 例例3-3 编写倒计时程序编写倒计时程序 程序如下:程序如下:clear,clcinput(Press any key to start!),clc, disp(倒计时倒计时10秒:秒:10)for i=9:-1:0 pause(1);clc,disp(倒计时倒计时10秒:秒:i)end %锣声锣声load gong, sound(y,Fs)%鸟声鸟声 chirp%笑声笑声 laughter%火车火车 train3.2.2 选择结构选择结构1if语句语句(条件转移语句)条件转移语句) if语句有语句有3种格式:种格式: (1) 单分支单
10、分支 ifend (2) 双分支双分支 ifelseend (3) 多分支多分支 ifelseif elseend (1) 单分支单分支if语句:语句: if 条件条件 语句组语句组 end 当条件成立时,则执行语句组,执行完之后继当条件成立时,则执行语句组,执行完之后继续执行续执行end后面的语句;若条件不成立,则直接执后面的语句;若条件不成立,则直接执行行end后面的语句。后面的语句。 (2) 双分支双分支if语句:语句: if 条件条件 语句组语句组1 else 语句组语句组2 end 当条件成立时,执行语句组当条件成立时,执行语句组1,否则执行语句,否则执行语句组组2,语句组,语句组1
11、或语句组或语句组2执行后,再执行执行后,再执行end后面后面的语句。的语句。 例例3-4 写出下面写出下面“计算分段函数的值计算分段函数的值”程序的运行结果。程序的运行结果。x=input(请输入请输入x的值的值: );if x=A & c=a & c=0 & c=9 disp(c-48); else disp(c); end例例3-6 某商场对顾客所购买的商品实行打折销售,某商场对顾客所购买的商品实行打折销售,标准如下标准如下(商品价格用商品价格用price来表示来表示): price200 没有折扣没有折扣 200price500 3%折扣折扣 500price1000 5%折扣折扣 10
12、00price2500 8%折扣折扣 2500price5000 10%折扣折扣 5000price 14%折扣折扣输入所售商品的价格,求其实际销售价格。输入所售商品的价格,求其实际销售价格。程序程序1:price=input(请输入商品价格请输入商品价格: );if price=200 & price=500 & price=1000 & price=2500 & price5000 rate=10/100;else %价格大于等于价格大于等于5000 rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格输出商品实际销售价格程序程序2:price=i
13、nput(请输入商品价格请输入商品价格: );if price 200 rate=0;elseif price 500 rate=3/100;elseif price 1000 rate=5/100;elseif price 2500 rate=8/100;elseif price 0) sum mean=sum/cntend3.2.2.3 break语句和语句和continue语句语句 与循环结构相关的语句还有与循环结构相关的语句还有break语句和语句和continue语句。它们一般与语句。它们一般与if语句配合使用。语句配合使用。 break语句用于终止循环的执行。当在循环体内语句用于终
14、止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。语句的下一语句。 continue语句控制跳过循环体中的某些语句。当语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。所有剩下的语句,继续下一次循环。 提前折回!提前折回!例例3-11 求求100,200之间第一个能被之间第一个能被21整除的整数。整除的整数。程序如下:程序如下:for n=100:200 if mod(n,21)=0 continue end b
15、reakendn结果:结果:n = 1053.2.2.4 循环的嵌套循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。就称为循环的嵌套,或称为多重循环结构。 for for end end例例3-12 若一个数等于它的各个真因子之和,则称该数若一个数等于它的各个真因子之和,则称该数为完数(完全数、完备数或完美数),如为完数(完全数、完备数或完美数),如6=1+2+3,所,所以以6是完数。求是完数。求1,500之间的全部完数。之间的全部完数。程序如下:程序如下:for m=1:500 s=0; for k=1
16、:m/2 if mod(m, k)=0 s=s+k; end end if m=s disp(m); endend3.3 函数文件函数文件 函数文件由函数文件由function语句引导,其基本结构为:语句引导,其基本结构为: function 输出形参表输出形参表=函数名函数名(输入形参表输入形参表) 函数体函数体 其中以其中以function开头的一行为引导行,表示该开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变文件是一个函数文件。函数名的命名规则与变量名相同。量名相同。 输入形参为函数的输入参数,输出形参为函输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该数的输出参数。当输出形参多于一个时,则应该用方括号括起来。用方括号括起来。 例例3-13 编写函数文件求半径为编写函数文件求半径为r的圆的面积和周长。的圆的面积和周长。 函数文件函数文件csp.m 如下:如下: function s, p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of rad