资源描述
,第五章,MATLAB,编程,数值仿真与,MATLAB,*,第五章,MATLAB,编程,数值仿真与,MATLAB,第五章,MATLAB,编程,本章主要内容如下:,5.1 MATLAB,程序控制,5.2 M,脚本文件和,M,函数文件,5.3,串演算函数,5.4,保存和载入变量,5.1 MATLAB,程序控制,5.1.1 for,循环结构,for x=array,(commands),end,【,说明,】,for,指令后的变量,x,称为循环变量,,commands,为循环体,循环体执行的次数由,for,后的数组,array,的列数决定,【,例,4-1】,绘制,t,=0,18,的曲线,clf;t,=0:0.1:18;,for x=0.2:0.2:0.8,b=sqrt(1-x2);,z=,atan(b/x,);,y1=-t*x;y2=t*b+z;,y=1-exp(y1).*sin(y2)/b;,plot(t,y),hold on,end,xlabel(t,(,秒,),),ylabel(y,),title(,二阶系统阶跃响应,),text(3.3,0.9,xi=0.8),text(4.3,1.4,xi=0.2),%,阻尼比,计算,5.1.2 while,循环结构,while expression,(commands),end,【,说明,】,当,while,后,expression,表达式为逻辑真(非,0,)时,执行循环体命令,commands,,直到表达式的值为假,当表达式的值为数组时,只有当该数组所有元素均为真时,才会执行循环体命令,如,while,后的表达式为空数组,,MATLAB,认为表达式为假,而不执行循环体,【,例,4-2】,一数组的元素满足规则:,(k=1,2,),;,且,。现要求该数组中第一个大于,10000,的元素,a(1)=1;a(2)=1;i=2;,while a(i)2,error(,输入宗量太多。,);,end,;,if,nargin=1,s=,b,;,end,;clf,;,t=0:pi/100:2*pi;,x=r*,exp(i,*t);,if,nargout=0,plot(x,s);,else,sa,=pi*r*r;,fill(real(x),imag(x),s,),end,,,axis(,square,),函数申明行,H1,行,在线帮助文本,函数体,【,说明,】,1,),H1,行包含大写体的函数文件名,运用关键词简要描述的函数功能。该行提供,lookfor,关键词查询和,help,在线帮助使用,2,),M,脚本文件仅比,M,函数文件少一个函数申明行,【,说明,】,nargin,nargout,为输入、输出宗量检测指令,figure(2):,sb,=,314.1593,figure(3),%,例,4.2-1,函数调用示例,figure(1),sa,=circle(10,r),figure(2),sb,=circle(10),figure(3),circle(10,k),figure(1):,sa,=,314.1593,5.2.4,局部变量和全局变量,局部(,Local,)变量,存在于函数空间内部的中间变量,产生于函数的运,行过程中,影响范围也仅限于函数本身,全局(,Global,)变量,通过,global,指令,可定义为不同函数空间和基本空,间共享的同一变量,即全局变量,【,说明,】,对全局变量的定义必须在该变量被调用之前,不提倡使用全局变量,因为会损害函数的封装性,5.3,串演算函数,5.3.1 eval,eval,是一种串演算函数,它具有对字符串表达式进行计算的能力,其调用格式为:,y=,eval(CEM,),执行,CEM,指定的计算,。,y1,y2,.=,eval(CEM,),执行对,CEM,代表的函数文件的调用,并输出计算结果,指令、表达式、语句以及由它们综合组成的,M,文件是完成计算所最常使用的形式。为提高计算的灵活性,,MATLAB,还提供了,eval,和,feval,两种演算函数,常用于,GUI,的回调操作,【,例,4-9】eval,指令演示。执行以下指令:,%,演示一,clear,t=pi;,eval(theta,=t/2,y1=sin(theta);,%,演示二,CEM=,cos,sin,tan,;,for k=1:3,theta=pi*k/12;,y2(1,k)=eval(CEMk,(,num2str(theta),);,end,y2,theta=,1.5708,y1=,1,y2=,0.9659 0.5000 1.0000,运行结果显示如下:,【,说明,】,1,)演示二中,,num2str,为将非整数数组转换为串数组的指令,2,),eval(CEMk,(,num2str(theta),),中,用,表示组合字符串,5.4,数据接口,MATLAB,支持两种数据接口,(Importing and Exporting Data),功能,使得用户可以十分方便地与其它的应用程序交换数据和信息。,MATLAB,与其他应用程序交换只接受两种数据形式,为:,1,),ASCII,码的文本数据文件;,2,),MATLAB,定义的,MAT,型数据,即所谓的,MAT,文件,数据结构包含,:,变量名,(NAME),、变量的维数,(Dimensions),、变量的类型,(ClassName),、变量的实数或复数类型、变量的存储属性,(Storage),5.4.1,数据存贮,save,命令,1,),save,命令可以将,MATLAB,系统内部数据写为,MAT,文件,2,)当,save,生成,MAT,文档时,所储存的是变量本身,而非直接储存变量的数据;而当,save,生成的文档是,ASCII,文档时,则是直接储存变量的数值,3,),save,命令将工作空间中全部变量值存入磁盘,.,若不指定变量名,其默认的文件名为,matlab.mat,。当再次用,save,命令时,就会将先前形成的,matlab.mat,文件中的数据覆盖掉,4,),save,命令存档格式有两种:二进制格式和,ASCII,码,。如果数据只在,MATLAB,中产生及使用,以使用,MAT,文件为宜。如数据文档要被其它应用软件读取使用时,则必须用,ASCII,文件,5.4.1,数据存贮,save,命令调用格式,save,:将工作空间的全部变量以二进制形式存于,matlab.mat,中,save filename,:将工作空间的全部变量以二进制形式存于,filename.mat,save filename variables,:将工作空间的指定变量,variables,以二进制形式存于,filename.mat,save filename options,:用下表中的格式存储工作空间的全部变量,save filename variables options,:用下表中的格式存储工作空间的指定变量,选 项,存 储 格 式,-ascii,8,位,ASC,码格式,-asii-double,16,位,ASC,码格式,-append,在已有的,MAT,文件中添加指定变量,save test a b c,将变量,a,、,b,、,c,以二进制格式存于名为,test,的,-MAT,文件中,可让电脑在读入,/,出(,input/output,)时速率加快,save test a b cascii,将变量,a,、,b,、,c,以,ASCII,码,格式存于名为,test,的文件中(无扩展名)。,ASCII-file,是以可辨识的字元储存,但会降低电脑在读入,/,出的速率,【,例,】,5.4.2,数据读取,load,命令,load,是,save,的逆过程,它把磁盘上存储的,mat,数据文件,读取回,MATLAB,工作空间中。命令格式与,save,相仿,但,不能选择变量。例如:,load test:,将,test.mat,文件中的全部数据连同其变量名都下载到工作空间中,5.4.2,数据输入,load,命令使用时的注意事项,以二进制形式存储的文件,可直接使用,load,命令调用,以,ASCII,码形式存储的多个变量将会合成一个变量(成为,m,n,数组),变量名就是存储成的文件名。在用,load,命令调用时,必须使用,-ascii,选项,并用冒号算子访问每一个变量,所要调用的文件必须在,MATLAB,的搜索路径上,对于,.txt,等类型的文本格式的文件,也可利用,load,命令导入,如,load st.txt,MATLAB,搜索路径,否,否,否,是否为内存中变量,?,是否为内建函数?,是否为当前目录上的,M,文件?,是否为,MATLAB,搜索路径其它目录上的,M,文件?,【,例,】,将工作空间中的变量,sita,,以,ASCII,码形式,存入到名为,st,的文件中,在指令窗中输入:,save,st,sita,-ascii,则,sita,以,ASCII,码形式,存入,st,中,在指令窗中输入:,load,st,-ascii,则,st,将被导入到工作空间中,练 习:,教材,85,页,1,题,
展开阅读全文