1 / 34

实验三 M 文件与程序设计

实验三 M 文件与程序设计. —— matlab 语言称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易 , 是 matlab 的重要组成部分。. 一、 M 文件. 二、程序控制结构. 三、函数文件. 一、 M 文件. 1.M 文件概述. 用 MATLAB 语言编写的程序,称为 M 文件。 M 文件可以根据调用方式的不同分为两类:命令文件( Script File )和函数文件( Function File ). 2.M 文件的建立与打开. ( 1 )建立新的 M 文件. 菜单操作:菜单选择 File——New——M-file

aden
Download Presentation

实验三 M 文件与程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验三 M文件与程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易, 是matlab的重要组成部分。 一、M文件 二、程序控制结构 三、函数文件

  2. 一、M文件 1.M文件概述 用MATLAB语言编写的程序,称为M文件。M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File). 2.M文件的建立与打开 (1)建立新的M文件 菜单操作:菜单选择File——New——M-file 命令操作:命令窗口中输入 edit 命令按钮:单击工具栏上的New M-File命令

  3. 操作后会启动MATLAB文本编辑器,输入M文件的内容并存盘就建立了一个新的M文件。操作后会启动MATLAB文本编辑器,输入M文件的内容并存盘就建立了一个新的M文件。 注:储存时文件名遵循MATLAB变量命名的原则,但必须 以m为扩展名.

  4. (2 )打开已有的M文件 菜单操作:菜单选择File——Open——选择文件 命令操作:命令窗口中输入:edit 文件名 命令按钮:单击工具栏上的Open File命令,选择文件 3.命令文件 一个复杂的程序我们可以建立一个文本文件并把它储存起来,可以随时调用进行计算,这就是命令文件。执行时只要在工作区中键入不带扩展名的文件名即可 . 注:命令文件中的变量都是全局变量,在执行过程中,其命令可以使用工作区中的变量,它所产生的变量也将成为工作区的一部分 .

  5. 例1建立命令文件,将华氏温度f转换为摄氏温度c.例1建立命令文件,将华氏温度f转换为摄氏温度c. 在文本编辑器中输入: clear; f=input(‘Input Fahrenheit temperature:'); c=5*(f-32)/9 以文件名f1c.m存盘,然后在命令窗口中输入: f1c ↙ Input Fahrenheit temperature:73 ↙ c = 22.7778

  6. 二、程序控制结构 matlab语言的程序控制结构与其它高级语言是一致的,分为顺序结构,选择结构,循环结构。 1.顺序结构—— 依次顺序执行程序的各条语句 (1)数据的输入——input 调用格式:A=input(提示信息,选项) 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用‘s’选项,则允许用户输入一个字符串。 (2)数据的输出——disp 调用格式:disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。

  7. 例2输入x,y的值,并将它们的值互换后输出。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 存盘为f1.m,在命令窗口中输入: >> f1↙ Input x please.5↙ Input y please.6↙ 6 5

  8. (3)关系运算符 关系运算比较两个数值,若真则值为1,若不成立则值为0,关系运算符可以作用于两个同样大小的矩阵或数组, MATLAB的关系运算符有: < 小于;> 大于;< = 小于或等于;> = 大于或等于; = = 等于;~ = 不等于 例3 A=1:5,B=5:-1:1↙ A = 1 2 3 4 5 B = 5 4 3 2 1 D=A= =B C=A>=4 C = 0 0 0 1 1 D = 0 0 1 0 0

  9. (4)逻辑运算符 MATLAB的逻辑运算符有: & 与运算;| 或运算;~ 非运算 逻辑运算将任何非零元素视为1(真),可以作用于矩阵或数组 例4 a=1:9,b=9-a,c=~(a>4),d=(a>=3)&(b<6) a = 1 2 3 4 5 6 7 8 9 b = 8 7 6 5 4 3 2 1 0 c = 1 1 1 1 0 0 0 0 0 d = 0 0 0 1 1 1 1 1 1

  10. (5)逻辑函数 MATLAB还提供了一些关系和逻辑函数,常见的有 all和any :all(x)当x是一个向量,所有元素非0时,值为1,否则为0,当 x 是一个矩阵时,作用于每一列; any(x)当x是一个向量,有一元素非0时,值为1,否则为0,当 x 是一个矩阵时,作用于每一列. 例5 a=[1 0 -5 0;-3 0 8 2],b=all(a),c=any(a),d=all(b),e=any(c) a = 1 0 -5 0 -3 0 8 2 b = 1 0 1 0 c = 1 0 1 1 d = 0 e = 1

  11. 2.选择结构——根据一定条件来执行的各条语句2.选择结构——根据一定条件来执行的各条语句 (1)if 语句 条件语句 if 最简单的用法是: if 条件 <语句1> end 如果条件成立,则语句1执行;否则,执行 end 的后继命令 if 语句的另一种用法是: if 条件 <语句1> else <语句2> end 如果条件成立,则语句1执行;否则,语句2执行,然后执行 end 的后续命令.

  12. 当我们有多个选择时,还可以用下列结构: if 条件1 <语句1> elseif 条件2 <语句2> …… elseif 条件n <语句n> else <语句n+1> end

  13. 例6 计算分段函数的值 if x<=0 f=0 elseif x<=pi/2 f=sin(x) else f=1 end

  14. (2)switch 语句 switch语句根据表达式的值来执行相应的语句,用法如下: switch 〈表达式〉 case value1 〈语句1〉 case value2 〈语句2〉 …… otherwise 〈语句n〉 end

  15. 例7某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。 price=input(‘请输入商品价格’); switch fix(price/100) case{0,1} rate=0; case{2,3,4} rate=3/100; case num2cell(5:9) rate=5/100; 程序为:

  16. case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100; otherwise rate=14/100; end price=price*(1-rate) 存盘为ff2.m,在命令窗口中输入: >> ff2 ↙ 请输入商品价格700 ↙ price = 665

  17. (3)try 语句 try语句用法如下: try 〈语句1〉 catch 〈语句2〉 end 运行时先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息付给保留的lasterr变量,并转去执行语句组2。

  18. 3.循环结构——被重复执行的一组语句,循环是计算机解决问题的主要手段3.循环结构——被重复执行的一组语句,循环是计算机解决问题的主要手段 (1)for 语句 循环语句for 的一般形式为: for 〈循环变量〉=〈初值〉:〈步长〉:〈终值〉 〈循环体语句〉 end 注:步长为1时可以省略 例8 x(1)=1; for i=2:6 x(i)=2*x(i-1); end x ↙ x = 1 2 4 8 16 32

  19. for 循环的另一种形式是: for 〈循环变量〉=〈数组或矩阵〉 〈循环体语句〉 end 执行过程是依次将矩阵的格列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 例9 I=[1 2;3 4]; for i=I k=i(1); f(:,k)=i.^k; end f ↙ f = 1 4 3 16

  20. 循环语句可以嵌套,即一个循环结构的循环体又包括一个循环结构 。也称为多重循环。 例10 for i=1:3 for j=1:4 a(i,j)=1/(i+j-1); end end format rat a ↙ a = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6

  21. (2)while 语句 如果不知道循环次数,可以使用 while 循环来完成,其一般形式为: while 条件 〈命令语句集〉 end 例11用while循环求1~100间整数的和。 sum=0; i=1; while i<=100 sum=sum+i; i=i+1; end sum ↙ sum = 5050

  22. (3)break语句和continue语句 MATLAB还提供了跳出循环的 break 语句,遇到此语句立即执行此循环 end 的后续语句, continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。 例12求[100,200]之间第一个能被21整除的整数。 for n=100:200 if rem(n,21)~=0 continue end break end n ↙ n = 105

  23. 三、 函数M-文件 我们可以根据需要建立自己的函数文件,它们能够象库函数一样方便地调用,从而极大地扩展MATLAB的功能.如果对于一类问题建立起许多函数M-文件,就能形成独立的工具箱. 1.函数文件的基本结构 函数M-文件必须由function语句引导,其基本结构为: function 因变量=函数名(自变量) %注释说明部分 函数体语句 注1:若因变量不止一个,可用方括号将它们括起来,并用逗号分开,每一行%后的内容只作为程序的注释,MATLAB不执行。 注2:这个M-文件的文件名必须是 函数名.m

  24. 2.函数调用 函数调用的一般格式是: 因变量=函数名(自变量) 例13建立函数文件,将华氏温度f转换为摄氏温度c. 在文本编辑器中输入: function c=f2c(f) c=5*(f-32)/9 以文件名f2c.m存盘,然后在命令窗口中输入: y=input('Input FAhrenheit temperture:');x=f2c(y)↙ Input Fahrenheit temperture:70↙ c = 21.1111 x = 21.1111

  25. 例14定义多元函数 建立函数文件eryuan.m function f=eryuan(x,y) f=(y^2+2*x)/(y^2-2*x); 在命令窗口中输入: eryuan(3,2) ↙ ans = -5

  26. 函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身,一个函数调用它自身称为函数的递归调用。函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身,一个函数调用它自身称为函数的递归调用。 例15利用函数的递归调用求n! 递归调用函数文件factor.m如下: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end >> factor(5) ↙ ans = 120

  27. 四、应用举例 例16求解数学问题(鸡兔同笼问题):求2个自然数,它们的和等于100,且第一个数被2除的商与第二个数被4除的商的和为36. i=1; while i<=100 if rem(100-i*2,4)==0&(i+(100-i*2)/4)==36 break; end i=i+1; end a1=i*2 a2=100-i*2 a1 = 44 a2 = 56

  28. 例17从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。例17从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。 建立命令文件li17.m sum=0; cnt=0; val=input('Enter a number(end in 0):'); while (val~=0) sum=sum+val; cnt=cnt+1; val=input('Enter a number(end in 0):'); end if(cnt>0) sum mean=sum/cnt end

  29. li17↙ Enter a number(end in 0):8↙ Enter a number(end in 0):9↙ Enter a number(end in 0):7↙ Enter a number(end in 0):0↙ sum = 24 mean = 8

  30. 附: 猜数字 for h=1:20; y=floor(rand(1,4)/0.1); if y(1)~=y(2)&y(1)~=y(3)&y(1)~=y(4)&y(2)~=y(3)&y(2)~=y(4)&y(3)~=y(4) break end end y;

  31. y=y(1)*1000+y(2)*100+y(3)*10+y(4); y=int2str(y); z='AaBb'; for k=1:8 x=input('input the number>','s'); a=0;b=0; for i=1:4; if x(i)==y(i) a=a+1; end end

  32. for i=1:4; for j=1:4; if x(i)==y(j) b=b+1; end end end z(2)=int2str(a);z(4)=int2str(b); z if a==4 congratulation=('You are Win!') break end if k==8 Times_over=('You are Lose!') end end

  33. 1.建立函数 的M文件,并计算 f (10)和 f (100). 实验任务 2.若一个三位整数各位数字的立方和等于该数本身,则称该数位水仙花数,输出全部水仙花数. 3.个人所得税计算方法为: 应纳个人所得税税额= (应纳税所得额-2000)*适用税率-速算扣除数 不超过500元的,税率5%,速算扣除数为0; 超过500元至2000元的部分,税率10%,速算扣除数为25 超过2000元至5000元的部分,税率15 %,速算扣除数为125 超过5000元至20000元的部分,税率20 %,速算扣除数为375 超过20000元至40000元的部分,税率25%,速算扣除数为1375

  34. 超过40000元至60000元的部分,税率30%,速算扣除数为3375 超过60000元至80000元的部分,税率35%,速算扣除数为6375 超过80000元至100000元的部分,税率40%,速算扣除数为10375 超过100000元的部分,税率45%,速算扣除数为1537. 若某人的月工资为x,试建立税款y与收入x之间的函数M文件. 选做:猜数游戏 首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数.根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You Win”,同时退出游戏.用户最多可以猜7次.试编写MATLAB程序,实现上述游戏.

More Related