您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Matlab_程序设计和M文件
第5章程序设计和M文件5.1程序控制5.2M文件结构5.3函数的使用5.4程序的调试5.5匿名函数、inline对象和函数句柄5.6函数绘图5.7数值分析5.1程序控制三种常用的结构:顺序结构、分支结构和循环结构。4种程序流程控制语句:分支控制语句、循环控制语句、错误控制语句和流程控制语句。5.1.1分支控制语句——实现满足一定条件就执行相应分支的功能。1.if结构if条件1语句段1elseif条件2语句段2......else语句段nend例5-1221101111xxxxxx=-5:0.1:5;ifx=1y=x.^2-1;elseif-1x1y=0;elsey=-x.^2-1;endplot(x,y);-5-4-3-2-1012345-30-25-20-15-10-502.switch结构——常用于各种条件的列举。switch表达式case值1语句段1case值2语句段2...otherwise语句段nend说明:(1)表达式只能是标量或字符串;(2)case后面的值可以是标量、字符串或元胞数组;(3)switch和end必须配对使用。例5-2使用switch结构判断学生成绩的等级,90分以上为优,80~90为良,70~80为中,60~70为及格,60分以下为不及格。score=98;s1=fix(score/10);%取十位数switchs1case{9,10}s='优'case8s='良'case7s='中'case6s='及格'otherwises='不及格'ends=优5.1.2循环控制语句——实现将某段程序重复执行。1.for循环for循环变量=array循环体end说明:array可以是向量也可以是矩阵,循环执行的次数就是array的列数,每次循环中循环变量依次取array的各列并执行循环体,直到array所有列取完。练习forn=1:5%循环5次forn=-1:0.1:1%循环21次forn=linspace(-2*pi,2*pi,5)%循环5次a=eye(2,3);forn=a%循环3次,n为列向量例5-3x=eye(5);len=length(x)forn=1:lenx(n,n)=nendlen=5x=1000001000001000001000001x=1000002000001000001000001…x=1000002000003000004000005or:x=eye(5);forn=1:length(x)x(n,:)=x(n,:)*nend2.while循环——常用于预先知道循环条件或循环结束条件的情况。while条件表达式循环体end例5-4使用while循环计算f(x)=sin(x),x5且每次x递增ln(x)。x=0.1;whilex5f=sin(x)x=x+log(x)endf=-4.0651e+002-1.5921e+003ix=5.5640+9.2717i3.break和continue语句——控制循环的流程。(1)break语句break语句使包含break的最内层for或while循环强制终止,并立即跳出该循环结构,执行end后面的命令,break一般与if语句结合使用。(2)continue语句continue语句与break不同的是continue只结束本次for或while循环,而继续进行下次循环,continue一般也与if语句结合使用。eg.for循环中的break语句forii=1:5ifii==3;break;endfprintf('ii=%d\n',ii);enddisp('Endofloop!');结果:ii=1ii=2Endofloop!eg.for中的continue语句forii=1:5ifii==3;continue;endfprintf('ii=%d\n',ii);enddisp('Endofloop!');结果:ii=1ii=2ii=4ii=5Endofloop!【例5-5】计算f(x)=ex,使用break语句当f(x)1000时终止计算。x=0:10;forn=xf=exp(n);iff1000breakendendn=7f=1.0966e+003例5-6使用for循环将字符串中的数值取出,遇到非数值则跳过。str='Theresultis100.';len=length(str);s=[];forn=1:lenifstr(n)'9'|str(n)'0'%非数值时continueends=[sstr(n)]ends=1s=10s=100相当于:str='Theresultis100.';len=length(str);s=[]forn=1:lenifstr(n)='0‘&str(n)='9's=[sstr(n)]endend5.1.3错误控制语句——当程序可能出现运行错误时,可以使用错误控制结构来捕获和处理错误,避免程序出错而不能继续运行。try语句段1catch语句段2end执行过程:1.先试探地执行语句段1,如果出现错误则将错误信息赋给保留的lasterr变量,并放弃语句段1转而执行语句段2中的语句;如果语句段2正确则结束;2.当语句段1和语句段2都错误,则程序出错。3.如果语句段1正确则不执行语句段2就结束;例5-7a=[135];b=[123];tryc=a.*b'catchc=a.*b;endcc=1615[lastmsg,lastid]=lasterrlastmsg=Errorusing==timesMatrixdimensionsmustagree.lastid=MATLAB:dimagree例5-7-2a=[123]b=[456]tryc=a*b;disp('tryisexcute')catchc=a.*b;disp('catchisexcute')endc5.1.4流程控制命令1.return命令return命令:(1)用于结束程序的执行,并立即返回到上一级调用函数(2)终止键盘方式注意:当程序进入死(无限)循环时,则按Ctrl+break键来终止程序的运行。2.keyboard命令keyboard命令用来使程序暂停运行,等待键盘命令,命令窗口出现“K”提示符,当键盘输入“return”后,程序才继续运行。keyboard命令可以用来在程序调试或程序执行时修改变量。a=[135];keyboardtryc=a.*b';catchc=a.*b;endc3.input命令a=input(‘Placeenteradata:’);r=input(‘str’,‘s’)%从键盘中输入字符串保存到变量r4.disp命令disp命令是较常用的显示命令,常用来显示字符串型的信息提示。5.pause命令pause命令用来使程序暂停运行,当用户按任意键才继续执行。常用于程序调试或查看中间结果,也可以用来控制执行的速度。pause的命令格式如下:pause(n)%暂停n秒练习5.2M文件结构MATLAB7.3的程序如果要保存则使用扩展名是“.m”的M文件,M文件有两种即M脚本文件(ScriptFile)和M函数文件(FunctionFile)。5.2.1M文件的一般结构1.函数声明行函数声明行是在M函数文件的第一行,只有M函数文件必须有,以“function”引导并指定函数名、输入和输出参数,M脚本文件没有函数声明行。2.H1行H1行是帮助文字的第一行。3.帮助文本4.程序代码程序代码由MATLAB语句和注释语句构成。5.2.2M脚本文件和M函数文件1.M脚本文件格式:通常为一连串指令,没有函数声明行,无输入和输出参数.M脚本文件的说明:(1)运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行;(2)M脚本文件运行产生的变量都驻留在MATLAB的基本工作空间中,在命令窗口中运行的命令可以使用这些变量;(3)脚本文件的命令可以访问工作空间的所有数据,因此要注意避免工作空间和脚本文件中的同名变量相互覆盖,一般在M脚本文件的开头使用“clear”命令清除工作空间的变量。例5-8在M文件编辑/调试器窗口中编写M脚本文件得出10~50范围内的所有素数。%EX5_8计算10~50内的素数cleary1=primes(50);%获得50以内的所有素数n=length(primes(10));%获得10以内素数的个数y=y1(n+1:end)在命令窗口中输入:ex5_8y=1113171923293137414347在工作空间中就可以查看到变量y1、n和y,并可以修改和使用这些变量。练习PRIMES(N)isarowvectoroftheprimenumberslessthanorequaltoN.Aprimenumberisonethathasnofactorsotherthan1anditself.2.M函数文件格式:有函数声明行,可以输入参数和输出参数。M函数文件的说明如下:(1)M函数文件在运行过程中产生的变量都存放在函数本身的工作空间中。函数的工作空间随具体的M函数文件调用而产生,并随调用结束而删除,如果运行多个函数则产生多个临时的函数工作空间;(2)当文件执行完最后一条命令或遇到“return”命令时就结束函数文件的运行,同时函数工作空间的变量被清除;(3)一个M函数文件至少要定义一个函数。函数声明行的格式:function[输出参数列表]=函数名(输入参数列表)说明:函数名是函数的名称,保存时最好函数名与文件名一致,当不一致时,MATLAB以文件名为准;输入参数列表是函数接收的输入参数,多个参数间用“,”分隔;输出参数列表是函数运算的结果,多个参数间用“,”分隔。函数定义的形式举例:定义多输入输出参数的函数function[x,y,z]=sphere(theta,phi,rho)无输入参数的函数functiony=sphere(orsphere())无输出参数的函数functionsphere(x)(orfunction[]=sphere(x))例5-9将例5-7的计算行向量乘积的运算使用M函数文件保存。functionc=ex5_9(a,b)%EX5_9(a,b)returnstheproductofaandb%cistheproduct%aisthemultiplier%bisthemultiplicand%copyright2007-10-01tryc=a.*b';catchc=a.*b;end调用该函数:z=ex5_9([123],[456])z=41018例:functiondistance=dist2(x1,y1,x2,y2)%DIST2Calculatethedistancebetweentwopoints%FunctionDIST2calculatesthedistancebetween%twopoints(x1,y1)and(x2,y2)inaCartesiancoordinatesystem.%%Callingsequence:%res=dist2(xl,y1,x2,y2)%Definevariables:%x1--x-positionofpoint1%y1--y-positionofpoint1%x2--x-positionofpoint2%y2--y-positionofpoint2%distance--Distancebetweenpoints%Recordofrevisions:%DateProgrammerDescriptionofchange%12/15/98S.J.Chapman
本文标题:Matlab_程序设计和M文件
链接地址:https://www.777doc.com/doc-7025826 .html