MATLAB应用11-1(精品)

上传人:无*** 文档编号:246750817 上传时间:2024-10-15 格式:PPT 页数:26 大小:396.50KB
返回 下载 相关 举报
MATLAB应用11-1(精品)_第1页
第1页 / 共26页
MATLAB应用11-1(精品)_第2页
第2页 / 共26页
MATLAB应用11-1(精品)_第3页
第3页 / 共26页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB,程序设计,M,文件编写与调试,交互式的命令行工作方式,M,文件的程序工作方式,脚本文件,(,命令文件,),函数文件,两类,M,文件,MATLAB,两种工作方式,6.1,脚本文件,脚本文件(命令文件)是将需要运行的命令编辑到一个命令文件中。,在,MATLAB,命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。,脚本文件没有输入参数,也不返回输出参数。,1. input,函数:,用于向计算机输入一个参数。,调用格式:,A=input(,提示信息,,,选项,),;,注:,s,选项,则允许用户输入一个字符串。,例如想输入一个人的姓名,可采用命令,xm,=,input(Whats,your,name:,s,),数据的输入,【,例,1】,求一元二次方程,ax,2,+,bx+c,=0,的根。,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),将该程序以,a1.m,文件存盘,然后运行,a1.m,文件。,2,pause,函数:,暂停程序的执行。,调用格式:,pause(,延迟秒数,),注:如果省略延迟时间,直接使用,pause,,,则将暂停程序,直到用户按任一键后程序继续执行。,hold on %,图形迭加,axis(0,100,0,120); %,设置坐标轴,k=0;A=0,0; %,导弹初始位置,B=0,100; %,飞机初始位置,v=1;dt=1; %,离散时间改变量,d=100; %,相距距离,while d0.5,plot(A(1),A(2),r.,); %,画导弹位置,plot(B(1),B(2),b*,); %,画飞机位置,pause(0.2);,k=k+1;,B=,B+v,*dt,0; %,飞机移动位置,e=B-A; %,导弹指向飞机向量,d=,norm(e,); e0=,e/d,; %,取向量方向(单位化),A=A+2.0*v*,dt,*e0; %,导弹追击位置,end,a2.m,【,例,2】,数据的输出,3,disp,函数:,命令窗口输出函数。,调用格式:,disp,(,输出项,),注:输出项为字符串或矩阵。,【,例,3】,A=,Hello,MATLAB,;,disp(A,),%,输出为:,Hello,MATLAB,程序结构:,顺序结构,MatLab,程序运算顺序,选择结构(分支结构),If,条件 , 表达式,;,else(if,),表达式,; endSwitch,表达式,,case,表达式,,otherwise,end,循环结构,For,变量,=,表达式, 循环语句,; endWhile,条件,语句,; end,6.1.1 MATLAB,的程序结构,【,例,4】 if,语句运用举例:输入三角形的三条边,求面积。,A=input(,请输入三角形的三条边:,);,if 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,a4.m,程序结构,: if,选择结构,【,例,5】 switch,语句运用举例:根据变量,num,的值来决定显示的内容。,num=input(,请输入一个数,);,switch num,case -1,disp(I,am a teacher.);,case 0,disp(I,am a student.);,case 1,disp(You,are a teacher.);,otherwise,disp(You,are a student.);,end,a5.m,程序结构,: switch,选择结构,实现循环结构的语句:,1,for,语句:,格式:,for,循环变量,=,表达式,1:,表达式,2:,表达式,3,循环体语句,end,注:其中表达式,1,的值为循环变量的初值,表达式,2,的值为步长,表达式,3,的值为循环变量的终值。步长为,1,时,表达式,2,可以省略。,2,while,语句,格式:,while (,条件,),循环体语句,end,程序结构,:,循环结构,【,例,6】,循环语句应用举例:计算满足表达式,的最大,y,、,n,值。,i,为正整数。,y=0; i=1;,while 1,%,循环的条件为,1,。本例循环条件总是满足的,是个永真循环,f=1/(2*i-1);,y=,y+f,;,if y3,break;,end,i=i+1;,end,n=i-1,y=,y-f,Break,语句,break,语句常用在,for,或,while,循环语句中,一般与,if,语句一起使用。其作用是当满足,if,语句时,在循环尚未结束时,跳出当前循环,。在嵌套循环中,,break,只能跳出包含它的最内层循环。,程序结构,: while,循环结构,Continue,语句,continue,也常和,if,语句一起用在,for,或,while,循环中。其作用是当满足,if,语句时,跳过循环体内位于,continue,之后的那些尚未执行的语句,,执行下一次循环的判断。(但不会跳出当前循环),循环的嵌套,如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。,多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。,【,例,7】,多重循环结构举例:求,100,1000,以内的全部素数。,n=0;,for m=100:1000,flag=1; j=m-1; i=2;,while i=j & flag,if,rem(m,i,)=0,%,绝对值求余数,比较,mod(-5,3),flag=0;,end,i=i+1;,end,if flag,n=n+1;,prime(n,)=m;,%,变量,prime,存放素数,end,end,prime,a7.m,程序结构,:,多重循环结构,6.2,函数文件,函数文件:每一个函数文件都定义一个函数。,MATLAB,提供的标准函数大部分都是由函数文件定义的。函数文件可以输入参数,也可返回输出参数。,与脚本(命令)文件不同,函数文件犹如一个“黑箱”,把一些数据送入处理,再把结果送出来。,MATLAB,提供的函数指令大部分都是由函数文件组成。,1,函数文件格式,函数文件由,function,语句引导,其格式为:,function,输出形参表,=,函数名,(,输入形参表,),注释说明部分,函数体,注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。如果输出形参个数多于,1,,则应该用方括号括起来。,2,函数文件调用,函数调用的一般格式是:,输出实参表,=,函数名,(,输入实参表,),function Yd=,DYdt(t,Y,) %,输入量,global G ME %,定义全局变量,xy,=Y(1:2);Vxy=Y(3:4); %,global G ME,G=6.672e-11;ME=5.97e24;,.,t,YY,=ode45(DYdt,tspan,Y0); %,采用,4,、,5,阶,Runge-Kutta,法,结构形式上:,函数文件的第一行总是以“,function”,引导,称为,函数申明行,。,该行以关键字,function,开头,函数名以及函数的输入输出变量都在这一行被定义。,函数申明行之后以,%,开头的第一行称,注释行,。这行供,lookfor,关键字查询。,第一注释行及其之后的连续以,%,开头的所有注释行构成整个在线帮助文本。可通过,help,查询到,称为,帮助文本区,。,与在线帮助文本区相隔一个“空”行,也以,%,开头,标志编写及修改该,M,文件的作者和日期,称为,编写和修改记录,。,接下来是,函数体,。,为清晰起见,它与前面的注释行以“空”格隔开。,6.2.1,函数文件的结构与特点,function Yd=,DYdt(t,Y,) %,输入量,global G ME %,定义全局变量,xy,=Y(1:2);Vxy=Y(3:4); %,r=sqrt(sum(xy.2); %,Yd=,Vxy,;-G*ME*xy/r3; %,计算,Y(t,),运行上与脚本文件运行不同 :,-,脚本文件运行后 ,所产生的所有变量都驻留在,MATLAB,基本工作空间,(,Base workspace,),中,。,只要用户不使用清除指令(,clear,),,MATLAB,指令窗不关闭,这些变量将,一直保存,在基本工作空间中。,-,函数文件运行时,,MATLAB,专门为它开辟一个临时工作空间,称为,函数工作空间,(,Function workspace,)。当执行文件最后一行指令时,就结束该函数文件的运行,同时该,临时,函数工作空间及其所有的中间变量就会立即被清除。,6.2.1,函数文件的结构与特点,6.2.2,函数文件调用,调用格式:,输出实参表,=,函数名,(,输入实参表,),函数调用时各,实参,出现的顺序、个数,应与函数定义时,形参,的顺序、个数一致,否则会出错。调用时先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。,函数调用可以嵌套,一个函数可以调用别的函数,甚至可以调用它自己(递归调用)。,文件名与函数名必须一一对应,这样才能保证调用成功。如果函数名和文件名不一致时以文件名为主,【,例,8】,编写函数文件求小于任意自然数,n,的,Fibonacci,数列。,function f=,ffib(n,),%,用于求,Fibonacci,数列的函数文件,%f=,ffib(n,),%1999,年,30,日编,f=1,1;,i=1;,while f(i)+f(i+1),ffib(2000),函数文件编写与调用,【,例,9】,利用函数文件,实现直角坐标,(x,y),与极坐标,(,),之间的转换。,函数文件,tran.m,:,function ,gama,theta,=,tran(x,y,),gama,=,sqrt(x,*x+y*y);,theta=,atan(y/x,);,转换公式:,极坐标的矢径:,=,极坐标的幅角:,tg,(,)=,y/x,命令窗口直接调用:,g,th,=tran(1,2),函数文件编写与调用,调用文件,main1.m,:,x=input(Please input x=:);,y=input(Please input y=:);,gam,the=,tran(x,y,);,gam, the,main1,6.2.2,函数文件调用,调用格式:,输出实参表,=,函数名,(,输入实参表,),MATLAB,允许使用比“标称数目”少的输入输出参数,实现对函数的调用。,调用函数时,,MATLAB,用两个永久变量,nargin,和,nargout,分别记录调用该函数时的输入实参和输出实参的个数。,只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,【,例,10】,nargin,用法示例,函数文件,charry.m,:,function,fout,=,charry(a,b,c,),if,nargin,=1,fout,=a;,elseif,nargin,=2,fout,=a+b;,elseif,nargin,=3,fout,=(a*b*c)/2;,end,命令文件,mydemo.m,:,x=1:3;y=4;,charry,(x),charry,(x,3),charry,(x,y,3),执行,mydemo.m,后的输出是:,ans =,1 2 3,ans =,4 5 6,ans =,6 12 18,%,注意:,nargin,和,nargout,本身都是函数,所以用户不能赋值,也不能直接显示,函数文件编写与调用,函数的类别,主函数和子函数:,开头定义的函数文件为主函数,而在函数体内定义的其他函数为子函数。,子函数只能被主函数或者同一主函数下的其他子函数所调用。,局部函数,Matlab,语言中把存放在目录,private,下的函数称为局部函数,这些函数只有,private,目录的父目录中的函数才可以调用,而子函数只能被其所在,M,文件的主函数所调用,所以,局部函数在可用范围上大于子函数。,注:,M,文件调用函数时,首先检测该函数是否为此文件的子函数;如不是,再检测是否为可用的局部函数;仍然为否时,再检测该函数是否为,Matlab,搜索路径上的其他,M,文件。,6.2.3,全局变量和局部变量,全局(,Global,)变量:通过,global,指令,定义,,,MATLAB,允许几个不同的函数以及基本工作空间共享同一个变量,这种被共享的变量称为全局变量。,局部(,Local,)变量:它存在于函数内部的中间变量,产生于函数的运行过程中,其影响范围仅限于该函数本身,%,全局变量的作用域是整个,MATLAB,工作空间,即全程有效。因此,定义全局变量是函数间传递信息的一种手段。但由于所有的函数都可以对它进行存取和修改,故易出错。,【,例,11】,建立函数文件,wadd.m,,函数将输入的参数乘以相应 的系数后相加。,function f=,wadd(x,y,),% add two variable,global ALPHA BETA,%,识别命令窗口的,alpha beta,值,f=ALPHA*x+BETA*y;,在命令窗口中输入:,global ALPHA BETA,ALPHA=1;,BETA=2;,s=wadd(4,5),输出为:,s = 14,M,函数全局变量应用示例,油膜扩散范围计算,模型方程 :,Q-,椭圆短轴的长度;,R-,椭圆长轴的长度;,o,、,w,-,油和水的密度,,kg/m,3,;,V-,溢油初始体积,,m,3,;,t-,扩散时间,,s,;,W,10,-,地面,10m,风速,,m/s,;,C1,、,C2-,经验常数,取,C1=1.1,,,C2=0.03,。,编制,M,文件计算:,o,=825kg/m,3,;,w,=1000kg/m,3,;,t=60h,;,W,10,=3.8m/s,;溢油量为,1800t,时 的油膜扩散范围。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!