资源描述
,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。感谢您,上机试验中碰到一些Matlab函数,(1)*.*.,(2)a:b:c linspace(a,b,c),(3)log log10,(4)exp,(5)length size,(6)round ceil floor,(7)inv mod,第1页,3.1 Matlab 程序类型,3.2 程序流程控制,3.3 关系与逻辑运算符,3.4 函数,3.5 绘图,第三章 MATLAB 编程基础,第2页,3.1 Matlab程序类型,1、脚本文件,以.m格式进行存取,包含一连串MATLAB指令和必要注解,全部变量都存在Workspace中,没有输入参数,也不返回参数。,2、函数文件(help function),以.m格式存在,函数接收输入参数,然后执行并输出结果。,第3页,3.2 程序流程控制,1、If,else,elseif,2、For,3、While,4、Switch,第4页,1、If,else,elseif,TYPE 1:,if expression,statements,end,Example,if mod(a,2)=0,a=a+3;,end,第5页,TYPE 2:,if,expression,statements,else,statements,end,Example:,if(sum(A(:,2)10),A(1,1)=A(1,1)+B(1,1),A(2,1)=2*A(2,1),else,A(1,1)=A(1,1)+A(1,1);,A(2,1)=0.5,end,第6页,TYPE 3:,if,expression,statements,elseif,expression,statements,else,statements,end,第7页,If语句能够嵌套,if,expression 1,statements,else,if,expression 2,statements,else,statements,end,end,第8页,步长缺省值为1,能够在正实数或负实数范围内任意指定。对于正数,循环变量值大于终止值时,循环结束;对于负数,循环变量值小于终止值时,循环结束。循环结构能够嵌套使用。,2、,for,循环语句,基本格式,for 循环变量起始值:步长:终止值,循环体,end,例:help for,第9页,3、while循环语句,基本格式,while 表示式,循环体,end,若表示式为真,则执行循环体内容,执行后再判断表示式,是否为真,若不为真,则跳出循环体,向下继续执行。,While循环和for循环区分在于,while循环结构循环体被执行次数不是确定,而for结构中循环体执行次数是确定。,第10页,4、Switch语句,switch,expression,can be a scalar or a string,case,test1,command set 1,case,test 2,command set 2,.,otherwise,command set last,end,第11页,3.3 关系和逻辑运算符,Operator,operation,=,Equal to,=,Not equal to,Greater than,=,Greater than or equal to,Less than,=,Less then or equal to,第12页,关系运算符,假设有:,A=1 2-1-5 B=0 2 3 1,小于 AB ans=0 0 1 1 A 大于 AB ans=1 0 0 0 A1 ans=0 1 0 0,=小于等于 A=大于等于 A=B ans=1 1 0 0,=等于,A=B ans=0 1 0 0 ;A=1 ans=1 0 0 0,=不等于 A=B ans=1 0 1 1;A=1 ans=0 1 1 1,第13页,Operator,Operation,&,Logical AND,|,Logical OR,Logical NOT,第14页,非,A=0 0 1 0 1=0,注意:在处理逻辑运算时,运算元只有两个值即0和1,所以假如指定数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。,设有:A=5-4 0-0.5 B=0 1 0 9,&与,A&B=0 1 0 1 A&1=1 1 0 1,|或,A|B=1 1 0 1 A|1=1 1 1 1,第15页,Compute,ss=1;k=2;exact=pi2/6,while abs(1-ss/exact)=1e-4,ss=ss+1/k2;,k=k+1;,end,第16页,3.4 函数编写,格式:function 返回变量列表=函数名(输入变量列表),function,outarg1,outarg2,=fname(,inarg1,inarg2,),第17页,求n!,function k=factorial(n),if nargin1,error(输入变量个数错误,只能输入,个数量);end,if nargout1,error(输出变量个数过多);end,if abs(n-floor(n),epsn0%(判定n是否为非负整数),error(n应该为非负数);,end,if n1,k=k*factorial(n-1);,else,if(n=0|n=1)k=1;end,end,第18页,3.4 画图,axis,plot,subplot,figure,hold on,hold off,第19页,plot(y)y=4 2 3 4 6,plot(x,y)t=0:0.1:4*pi,y=sin(t),plot(t,y),plot(x,1,y,1,x,2,y,2,.),t,1,=0:0.1:2*pi,t,2,=0:0.1:4,plot(t,1,sin(t,1,),t,2,sqrt(t,2,),plot(x,y,option),如 t,1,=0:0.4:2*pi,t,2,=1:0.1;4;,plot(t,1,sin(t,1,),:,t,2,;cos(t,2,),g);,第20页,semilogx 横坐标为对数,semilogy 纵坐标为对数,loglog,横纵坐标均为对数,实例演示程序:,t=0.1:0.1:2*pi;,y=sin(t);,semilogx(t,y),grid on,第21页,图形窗口分割,Subplot(m,n,I)分成m行n列,并选定I,实例演示程序:,subplot(2,1,1),t=0.1:0.1:2*pi,y=sin(t),semilogx(t,y),grid on,subplot(2,1,2),x=1:0.01:5;,y=exp(x),plot(x,y),第22页,线颜色、线类型、标识类型,The line colors have,y,ellow,m,agenta,c,yan,r,ed,g,reen,b,lue,w,hite and blac,k,.,The line styles have solid line(,-,),dotted line(,:,),dot-dash line(,-.,),dash line(,-,)and no line(,).,The markers have point(,.,),circle(,o,),x-mark(,x,),plus(,+,),star(,*,),square(,s,),diamond(,d,),triangle(,v,),up-triangle(,),pentagram(,p,),etc.,图形标注,第23页,坐标加标注 图形加标题,xlabel,ylabel,zlabel,title,text,第24页,坐标轴,axis(xmin xmax ymin ymax);,hold on;hold off,第25页,实例演示程序:,t=0:0.1:4*pi;y=sin(t);plot(t,y),xlabel(x轴(04pi));ylabel(y轴),title(正弦波,Fontsize,12),第26页,图例:,为图形加图例便于观察分析,legend(string1,string2,string3,),实例演示:,t=0:0.1:4*pi,plot(t,sin(t),:,t,cos(t),*),legend(sin wave,cos wave,None),第27页,三维图例,:,mesh,surf,plot3,xx1=linspace(-3,3,20),xx2=linspace(-3,13,17),x1,x2=meshgrid(xx1,xx2);,z=x1.4+3*x1.2+x2.2-2*x1-2*x2-2*x1.2.*x2+6,surf(x1,x2,z),第28页,Q,1,(米,3,/秒),Q,2,(米,3,/秒),截面积A(米,2,),水位高度H(米),仿真实例:水,位系统,第29页,系统建模,实体,水池、管道、阀门,属性,参数信息:A,输入信息:Q,1,Q,2,输出(状态)信息:H,活动,因为Q,1,,Q,2,改变,H在不停地改变。,A Q,1,Q,2,H,数学模型,第30页,不难看出,在上面方程中有微分运算,这种运算在计算机中是无法实现,能够将其以采样时间T近似地转化为差分方程:,仿真建模,经过方程能够看出:假如知道初始时刻水位高度和每个时刻流入流出水量,就能够求出任意时刻水位高度。,第31页,程序设计,假设,在Matlab上设计程序sw.m,第32页,仿真结果,第33页,
展开阅读全文