第4章M文件和流程控制结构_第1页
第4章M文件和流程控制结构_第2页
第4章M文件和流程控制结构_第3页
第4章M文件和流程控制结构_第4页
第4章M文件和流程控制结构_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章M文件和流程控制结构用户在进行MATLAB操作时,经常需要输入较多的命令语句,而且有些还需要重复地输入,如果仍然按照上述在MATLAB命令窗口(CommandWindow)进行直接交互式命令操作方式,就显得比较烦琐和费时。为了改进这种情况,MATLAB提供文件编程操作方式。MATLAB中所有的文件和函数都分别对应一个M文件(以.m为后缀的文本文件),它可以在任何文本编辑器中进行显示和编辑,最方便的是在MATLAB程序编辑器窗口中进行(图1-2)。M文件的代码是纯ASCII码字符,可以在MATLAB命令窗口(CommandWindow)键入命令:typefunction_name来查看。4.1M文件的分类4.1.1命令文件(ScriptFile)命令文件也称为脚本文件,通常只是一系列命令语句的组合,没有输入参数,也不返回参数,运行时只需要在命令窗口键入文件名即可。例4-1试编制一命令文件,计算圆的面积与周长%计算圆的面积与周长的命令文件(rsc.m)r=input('请输入圆的半径(mm)r=');%使用键盘输入圆的半径rs=pi*r^2;%计算圆的面积c=2*pi*r;%计算圆的周长fprintf('圆的半径r=%3.4fmm\n',r)fprintf('圆的面积s=%3.4fmm^2\n',s)fprintf('圆的周长c=%3.4fmm\n',c)>>rsc请输入圆的半径(mm)r=35圆的半径r=35.0000mm圆的面积s=3848.4510mm^2圆的周长c=219.9115mm>>rsc请输入圆的半径(mm)r=58圆的半径r=58.0000mm圆的面积s=10568.3177mm^2圆的周长c=364.4247mm命令文件在运行过程中可以调用MATLAB系统工作域内的所有数据,所产生的变量也是全局变量,并且一直保存在工作域内,直至quit时为止。4.1.2函数文件MATLAB函数或函数文件是系统中已经设计好的为完成某一种特定的运算或是实现某一种特定的功能的子程序,MATLAB系统几十种工具箱中提供了丰富的函数库,它们是MATLAB系统的重要组成部分。在使用这些函数或函数文件时是作为命令来对待的,所以函数又称为函数命令。函数文件常用于需要反复调用和不断改变参数的场合,它可以接受参数,也可以返回参数,它的运行必须通过语句调用。1、函数文件的第一个可执行必须是函数文件定义语句:function[输出参数]=函数名(输入参数)2、函数文件可以带有多个输出参数和输入参数,也可以没有输出参数。当输入参数或是输出参数多于一个时,参数之间一般用逗号隔开。3、函数文件的命名规则与变量名的规则相同。两个函数的函数名即使相同,但是输入参数或输出参数的数目不同,它们的含义也不同。4、函数文件运行时,自动创建其独自的函数工作空间(functionworkspace),过程变量都存储这个工作空间中。函数文件执行之后只保留最后结果,不保留之间任何过程,所定义的变量也只要在函数内部起作用,并且随着该函数文件调用的结束而自动被清除。5、应当指出,以function开头的函数文件是一个独立M文件,必须单独储存在内存中MATLAB系统所在的工作目录:D:\MATLAB7\work中。将函数文件存盘时,缺省状态下系统自动储存为“函数名.m”的函数文件(即函数文件名与函数名相同)。如果函数文件名与函数名不同,MATLAB在调用时将以函数文件名为准(忽略函数名)。例4-2试使用调用函数文件方法,计算渐开线齿轮的齿廓函数值。%1-建立计算渐开线函数的函数文件(jkxhs.m)function[theta,rk]=jkxhs(alpha,rb)hd=pi/180;theta=tan(hd.*alpha)-hd.*alpha;%渐开线展角rk=rb./cos(hd.*alpha);%渐开线向径将该文件以文件名jkxhs.m保存在MATLAB工作区路径中。%2-建立调用命令文件m=input('输入齿轮模数(mm)m=');z=input('输入齿轮齿数z=');ha=input('输入齿高系数ha=');hd=pi/180;alpha_f=20;%分度圆压力角%计算齿轮的几何尺寸r=m*z/2;%分度圆半径rb=r*cos(alpha_f*hd);%基圆半径ra=r+ha*m;%齿顶圆半径alpha_a=acos(rb/ra);%齿顶圆压力角%调用计算渐开线函数的函数文件alpha=0:alpha_a/hd/5:alpha_a/hd;[theta,rk]=jkxhs(alpha,rb);thetak=theta/hd;%输出计算结果fprintf(‘齿轮模数m=%6.4fmm\n',m)fprintf(‘齿轮齿数z=%3.0f\n',z)fprintf(‘齿高系数ha=%3.4f\n',ha)fprintf(‘基圆半径rb=%6.4fmm\n',rb)fprintf(‘分度圆半径r=%6.4fmm\n',r)fprintf(‘齿顶圆半径ra=%6.4fmm\n',ra)fprintf('齿顶圆压力角alpha_a=%6.4f°\n',alpha_a/hd)disp'渐开线展角thetak(°)',thetakdisp'渐开线向径rk(mm)',rk输出的计算结果如下:齿轮模数m=5.0000mm齿轮齿数z=28齿高系数ha=1.0000基圆半径rb=65.7785mm分度圆半径r=70.0000mm齿顶圆半径ra=75.0000mm齿顶圆压力角alpha_a=28.7119°渐开线展角thetak(°)thetak=00.01930.15630.53861.31512.6721渐开线向径rk(mm)rk=65.778566.110267.122468.868071.443075.0000有时为了在命令文件中直接描述数学函数,可采用函数inline(),它的功能是建立一个内联函数,其调用格式是:fun=inline(’函数表达式’,自变量列表)其中自变量列表中每个自变量之间均需要用单引号括起来,相互之间用逗号分隔。例如,渐开线函数方程可以用函数inline()语句描述为theta=inline('tan(alpha*pi/180)-pi/180.*alpha','alpha');其中,alpha(表示压力角)是函数式中自变量。它只能返回1个变量,不支持较复杂的语句结构。4.2流程控制结构4.2.1顺序结构顺序结构是根据语句排列的顺序自上而下执行。主要包括数据的输入、处理、结果的输出等内容1、数据的输入(input函数)从键盘输入数据,可以使用input函数来进行,该函数的调用格式为:z=input(’屏幕上显示的提示信息’)当执行该函数时,系统等待从键盘输入数据后按回车键,输入的数据就存入变量z中。如果输入的是字符,则格式是z=input(’屏幕上显示的提示信息’,’s’)其中’s’表示键盘输入字符。2、数据的输出(disp和fprintf函数)1、函数disp是自由格式输出数据,用于直接输出字符或是数值,例如>>a=[2,4,6];>>dispaa>>disp(a)246注意:以上两例自由格式输出中,“a”表示字符,“(a)”表示向量a的值。2、函数fprintf在屏幕上输出格式化数据,一般调用格式是:fprintf(’屏幕上显示的提示信息%format\n’,v)其中,format用来指定数据输出时采用的格式:d表示整数;e表示实数(科学计算法形式);f表示浮点实数(小数形式);g表示由系统自动选取上述两种格式之一;s表示输出字符串;\n是换行符号,以避免下一个输出数据或是提示符号也挤在同一行;V是输出变量或是矩阵。例如:>>fprintf('Thepiis%4.8f\n',pi)Thepiis3.14159265可见,在2个单引号之间包括输出的字串“Thepiis”、输出数据的格式“%4.8f”(表示按照浮点数格式,8位小数,输出变量pi()的数据。>>fprintf('34的5次方=%2.6e\n',34^5)34的5次方=4.543542e+007可见,输出“34^5”值为指数格式的数据,6位小数。4.2.2循环结构循环结构是指按照给定的条件重复执行指定的语句。MATLAB提供了两种循环结构:for循环结构和while循环结构。1、for循环结构for循环结构的格式是:fori=c0:cb:cn循环体end其中,c0是循环变量i的初值;cb是循环变量i的步长,当cb取单位步长时可以省略;cn是循环变量i的终值。例4-3用筛选法求自然数2至m范围内的全部素数。素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。m=input('输入素数的最大范围m=');x=2:m;fork=2:sqrt(m)n=find(rem(x,k)==0&x~=k);x(n)=[];%去掉非素数endx运算结果:输入素数的最大范围m=30x=23571113171923292、while循环结构while循环结构的格式是:while(条件)循环体end其中的“条件”是一个关系表达式,当关系表达式的值为真时自动执行循环体,直到关系表达式的值条件为假,转向循环体结束标志end后面语句。应当指出,while循环执行过程中会改变while后面关系表达式的值,否则这个while循环是一个死循环,因此while循环执行次数是不定的。在for循环结构和while循环结构中,使用break命令可终止循环结构的运行。例4-5水仙花数是指一个3位数的各位数字的立方和等于该数本身,用while循环结构检索水仙花数m=100;while(m<=999);m3=fix(m/100);%保存百位数字m2=rem(fix(m/10),10);%保存十位数字m1=rem(m,10);%保存个位数字ifm==m3^3+m2^3+m1^3;disp(m)endm=m+1;end运算结果(写成一行):1533703714074.2.3选择结构选择结构是指按照给定的条件是否成立,分别执行不同的语句。MATLAB提供了两种选择结构:if选择结构和switch选择结构。1、if选择结构if(条件1)语句组1%满足条件1时执行该语句组elseif(条件2)语句组2%满足条件2时执行该语句组…else语句组n+1%上面的条件均不满足时end例4-6用选择结构建立样条函数的判断函数文件functionf=pdc(x)%该函数文件没有输出参数ifx<0f=0;elseifx<1f=x;elseifx<2f=2-x;elsef=0;end将该文件以文件名pdc.m保存在MATLAB工作区路径中。然后在MATLAB命令窗口中运行调用语句,显示结果为:>>pdc(-3.5)ans=0>>pdc(0.8)ans=0.8000>>pdc(2.8)ans=02、switch选择结构switch开关表达式case常量表达式1语句组1case常量表达式2语句组2…otherwise语句组nend当开关表达式的值与对应常量表达式的值匹配时,执行相应的语句组,然后执行end语句后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论