资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第一部分数字仿真,实验,实验 1,Matlab,概述,The,MathWorks,Inc,Matlab,的特点,强大的数学运算能力,方便实用的绘图功能及语言的高度集成性,比较完善的控制领域的工具箱,第一部分数字仿真,实验,实验 1,Matlab,概述,1,Matlab,语言的基本使用环境,命令子窗(,command window),程序调用版(,Launch Pad),命令的历史记录(,Command History),工作空间管理程序(,Workspace),当前目录管理程序(,Current Directory),第一部分数字仿真,实验,Matlab,的工作空间,命令是用命令行形式或,m,文件形式输入,那么输入的,命令和创建的所有变量值,就会驻留在,Matlab,的工作,空间,可在任何需要的时候调用。,工作空间管理命令,:,who,whos,clear,实验 1,Matlab,概述,关于变量和函数命名,一般为双精度浮点,8个字节(64位),-1.7*10,308,1.7*10,308,表示为,Double(),图象处理中:无符号8 位整型,表示为,unit8(),int8(),变量(函数名)由字母引导,可跟字母、数字、下化线等,不超过19个字符。区分大小写,支持复数向量、矩阵和字符串型矩阵。,2,Matlab,的基本特性,注释和标点,一行中,%后面的所有文字都是注释,多条命令可以放在同一行,只要它们被逗号或分号隔开,分号禁,止显示。连续三个点 表示语句的余下部分将在下行出现,变,量名不能分开,注释行不能续行。,特定常数,eps,浮点运算误差=2.2204*10,-16,j,i,纯虚数,Inf,无穷大,NaN,不定式,pi,圆周率,ans,用于返回结果的缺省变量名,nargin,所用函数的输入变量,nargout,所用函数的输出变量,2,Matlab,的基本特性,Matlab,的搜索路径,当你在命令行输入一个字符串(可能是变量或命令),回车后,,Matlab,按一定的顺序执行。例如,ptest,顺序为:,(1)检查是否为工作空间中的变量,(2)检查是否为内置函数,(3)检查,MEX,文件,ptest.mex,是否存在于当间目录,(4)检查,M,文件,ptest.m,是否为存在于当间目录,(5)按次序搜索已设置的路径。检查,ptest.mex,或,ptest.m,是否为存在于,matlab,的搜索路径中。,应用,c,语言按照,Mex,技术要求的格式编写相应部分的程序,通过编译连接,形成,Matlab,可以直接调用,的动态连接库,显著加快运算速度。,Matlab,的三种执行方式,M,文件和,M,函数,1 脚本文件(批处理文件),启动,M,文件编辑器,b=1;2;3;,A=1 2 3;4 5 6;7 8 9;,Inv(A)*b;,脚本文件空间与,Matlab,工作空间是相同的。,Matlab,的三种执行方式,M,文件和,M,函数,2,M,函数,function s=example2(A,b),%,求解线性方程组,As=b,的解,s,if,det(A,)=0,s=inv(A)*b,else,error(A,是一个奇异矩阵),end;,s=example2(A,b),保存文件时,文件名和函数名必须相同。,Matlab,的三种执行方式,m,函数有自己专用的工作空间,函数内部变量与,matlab,工作空间,之间的唯一联系是函数的输入和输出变量。,Matlab,的全局变量,函数与其他函数、,matlab,工作空间共享变量。说明变量全局共享的方法是“,global,变量名”,返回变量列表=函数名(变量列表),例如:,v,d=,eig(A,),函数调用语句,Matlab,里的函数(内置),x=1,pi,0.1 0.5,cos(x,),Ones(2,2),eye(3)length(A),size(A),sum(A),max(A),rank,det,log10,log log,sin,cos,tan,sum(x),t=0:0.1:10,Matlab,的矩阵运算,A=1,2,3;4,5,6;7,8,9,Matlab,的矩阵运算,冒号表达式给行向量赋值,A=A;1 2 4,b=s1:s2:s3,x=(first:last),x=(first:increment:last),x=,linspace(first,last,n,),x=,logspace(first,last,n,),3 矩阵的,Matlab,表示,访问矩阵的元素,A=1,2,3;4,5,6;7,8,9,A(1,:),A(2,1:3),A(1:3,1),A(2,2)=1;,zeros(2,2),ones(3,1),eye(4),3,矩阵运算,矩阵转置,加、减、乘,除,B=A,C=A+B;,D=A*B,inv(A),AB,左乘,当,A,为非奇异方阵时=,inv(A)*B,B/A,右乘,当,A,为非奇异方阵时=,B*inv(A),C=A.*B,矩阵对应元素之间的乘积,点运算,4 流程控制结构,循环语句、条件语句、开关语句的结构,通常使用的循环格式为,for i=s1:s3:s2,判断,i,是否在,s1,s2,之间,msum,=0;,for i=1:1:100,msum,=,msum+i,;,end;,msum,循环结构,for end,whileend,for,循环变量=,Vect,循环体语句组,end,4 流程控制结构,循环语句、条件语句、开关语句的结构,当逻辑变量为非零,则执行条件块语句组的内容,执行完后继续向下执行;若逻辑变量为零,则跳过条件块语句组直接向下执行,msum,=0;i=1;,while(i1,error(Too many output arguments);end,If,nargin,=1,m=n;,elseif,nargin,=01nargin2),error(wrong number of,intput,arguments);,end,A1=zeros(n,m);,for i=1:n,for j=1:m,A1(i,j)=1/(i+j-1);,end,end,If,nargout,=1,A=A1;elseif,nargout,=0,disp(A1);end,5,Matlab,函数编写,M,函数的跟踪调试,function A=,myhilb(n,m,),%,%,If,nargout,1,error(Too many output arguments);end,If,nargin,=1,m=n;,elseif,nargin,=01nargin2),error(wrong number of,intput,arguments);,end,A1=zeros(n,m);,for i=1:n,for j=1:m,A1(i,j)=1/(i+j-1);,end,end,If,nargout,=1,A=A1;elseif,nargout,=0,disp(A1);end,6,Matlab,语言下图形绘制,基本二维图象绘制语句,plot(x,y),t=0:0.1:2*pi;,y=sin(t);,cos(t,);,plot(t,y),t=0:0.1:2*pi;,plotyy(t,sin(t),t,0.1*,cos(t,),带有其他选项的绘图函数,plot(x1,y1,,选项1,,x2,y2,,选项2,。),6,Matlab,语言下图形绘制,带有其他选项的绘图函数示例,plot(t,sin(t),-,t,cos(t),:,t,sin(t,).*,cos(t),x,),grid,xlabel,(),ylabel,(),title(),axis(x,min,x,max,y,min,y,max,),二维曲线的标注方法,Matlab,提供的特殊二维曲线绘制函数,6,Matlab,语言下图形绘制,带有其他选项的绘图函数示例,plot(t,sin(t),-,t,cos(t),:,t,sin(t,).*,cos(t),x,),6,Matlab,语言下图形绘制,在已有的图形上叠加其他图形,hold on,设置当前图形的,hold,属性为,on,hold off,设置当前图形的,hold,属性为,off,ishold,返回,hold,属性,T=0:0.1:10;,plot(t,sin(t),-,t,cos,(t),:,t,sin(t).*,cos,(t),x);,legend(sin(t),cos,(t),cos,(t)*sin(t),6,Matlab,语言下图形绘制,带有其他选项的绘图函数示例,plot(t,sin(t),-,t,cos(t),:,t,sin(t,).*,cos(t),x,),7 传递函数的,Matlab,描述,传递函数描述,多项式描述与运算,p=1 3 0 5;,q=1 2;,n=,conv(p,q,),roots(p),value=polyval(n,-2),p(s)=s,3,+3s,2,+5,n(s)=p(s)q(s),多项式,p(s),的根,求,s=-2,时,n(s),的值,7 传递函数的,Matlab,描述,传递函数描述,G=,tf(num,den,),G=,tf,(num,den),printsys,(G),p,z=,pzmap,(num,den),G(s)=num(s)/den(s),零极点图,打印结果,G(s)=(6s,2,+1)/(s,3,+3s,2,+3s+1),z,p,k=tf2zp(num,den),7 传递函数的,Matlab,描述,框图的串联、并联和反馈,num,den,=,series(num1,den1,num2,den2),num,den,=,paralle1(num1,den1,num2,den2),num,den,=,feedback(num1,den1,num2,den2,sign),单位反馈,消除公因式,num,den,=,cloop,(num1,den1,sign),num,den,=,minreal,(,numg,deng,),7 传递函数的,Matlab,描述,设:,G1=num1/den1,G2=num2/den2,num1=s+1,den1=s,2,+5s+6,num2=1,den2=s,2,+3s,求,G1G2,的串联和反馈连接的等效传函,并求出零极点图,num,den,=,series(num1,den1,num2,den2),num,den,=,feedback(num1,den1,num2,den2,sign,num,den,=,cloop,(num1,den1,sign),G1,G1,G1,G1,G1,G1,8 命令行下的时域计算,给定传递函数,G1=2,计算单位阶跃响应,G2=1/(s+1)(s+3),y,x,t,=,step(num,den);,plot(t,y),step(num,den),y,x,t,=,step(num,den,t);,plot(t,y),G1,G1,8 命令行下的时域计算,控制器:,放大器,执行机构和读取臂:,直流电机和手臂,传感器:,磁头和索引磁道,预期磁,头位置,实际磁,头位置,磁盘驱动读取系统框图模型,磁盘驱动读取系统框图模型,讨论:增益,K=10,80,时,系统阶跃指令(,r(t)=u(t),的瞬态响应和,扰动阶跃信号(,d(t)=u(t),所产生的响应.,K,G,1,(s),线圈,D(s)G,2,(s),负载,R(s)E(s),Y(s),磁盘驱动读取系统框图模型,解:,1 求反馈回路的传递函数,,R(s)-Y(s);D(s)-Y(s),2,用,step,函数求对应的响应,求响应的稳态值,画出曲线。,K,G,1,(s),线圈,D(s)G,2,(s),负载,R(s)E(s),Y(s),仿真作业,1,用,Matlab,可以识别的格式输入下面两个矩阵,再求出它们的乘积,C,并将,C,矩阵的右下脚23子矩阵赋给,D,矩阵,赋值完成后,调用相应的命令查看,matlab,工作空间的占用情况,。,仿真作业,2,解线性方程,3 用,for,循环结构编写程序,求出,第一部分数字仿真,实验,实验2,Matlab/simulink,及时域仿真,Simulink,是,matlab,提供的实现动态系统建模和仿真的一个软件包。,simulink,Simulink,Library Browser,窗口,Simlink,的基本模块库,第一部分数字仿真,实验,实验2-1,Matlab/simulink,及时域仿真,仿真步骤:,根据系统模型建立,mdl,模型文件,在指定输入信号下进行数字仿真获得系统的时间响应曲线。,根据性能指标的定义计算系统的各项性能指标。,第一部分数字仿真,实验,实验2-1,Matlab/simulink,及时域仿真,在工作空间利用,matlab,提供的函数例如,step,margin,等也可以进行时域分析计算。,实验2,Matlab/simulink,及时域仿真,求解,Van,der,Pol,方程,实验2-2,simulink,模型举例,在.,mdl,模型文件中描述方程的关系,在,matlab,命令窗给参数赋值,mu,=1;x01=1;x02=-2,实验2,Matlab/simulink,及时域仿真,求解具有非线性环节的控制系统,实验2-2,simulink,模型举例,在.,mdl,模型文件中描述方程的关系,在,matlab,命令窗给参数赋值,c=1;,实验2-2,Matlab/simulink,及时域仿真,子系统(,subsystem),创建子系统,基于,matlab,函数的系统仿真分析,Matlab,函数,pzmap,zp2tf,tf2zp,roots,求零极点图,num=3 2 5 4 6;,den=1 3 4 2 7 2;,z,p,k=tf2zp(num,den),pzmap(num,den,),roots(den),num1,dn1=zp2tf(z,p,k),当没有零点时,z=,应用,simulink,进行仿真,单位阶跃响应函数,step,单位脉冲响应函数,impulse,任意输入下的响应函数,lsim,t=0:0.01:5;u=sin(t);lsim(sys,u,t),sys=,tf(num,den,),y,t,x=,lsim(sys,u,t,),y,t,x=,lsim(sys,u,t,),y,t,x=lsim(sys,u,t,x0),应用,simulink,进行仿真,num,den=cloop(10,1 2 0,-1),step(num,den),impulse(num,den),求系统的脉冲响应,(,稳定性,),和动态性能指标,.,例如,:,单位负反馈系统的开环传递函数为,实验,3,应用,Matlab,进行根轨迹分析,本节介绍的函数有,rlocus,调用方式:,rlocus(num,den,),r,k=,rlocus(num,den,),axis(minx,maxx,miny,maxy,),绘制根轨迹图,绘制系统的根轨迹图。,例题1:控制系统的开环传递函数为,实验,3,应用,Matlab,进行根轨迹分析,root-locus_examp1.m,num=1 5;,d1=conv(1 1,1 2);,d2=conv(1 3,d1);,den=d2 0;,rlocus(num,den,),%,或,num,den,=zp2tf(-5,0-1-2-3,3),r,k=,rlocus(num,den,);,绘制系统的根轨迹图。,实验,3,应用,Matlab,进行根轨迹分析,作业题:控制系统的闭环传递函数为,绘制系统,k,变化时的根轨迹图,;,用根轨迹方法求当,k=20,时闭环的全部极点,给出单位阶跃响应曲线,;,讨论系统的闭环主导极点是哪些,用主导极点法给出系统的单位阶跃响应,将结果与,2),比较,并进行分析,(,可用解析法,),。,实验,3,应用,Matlab,进行根轨迹分析,例题2:控制系统的闭环传递函数为,解:写出根轨迹方程,实验,3,应用,Matlab,进行根轨迹分析,root-locus_examp2.m,选择闭环复数的极点,-2.0,根轨迹增益,k=20.,找出另一个极点-0.89,写出,k=20,时的闭环系统的所有极点和零点,实验,3,应用,Matlab,进行根轨迹分析,root-locus_examp2.m,选择闭环复数的极点,-2.0,根轨迹增益,k=20.,找出另一个极点-0.89,num=1 1;,d1=conv(1 2,1 3);,den=d1 0;,rlocus(num,den,),%,或,r,k=,rlocus(num,den,);,写出,k=20,时的闭环系统的所有极点和零点,实验,3,应用,Matlab,进行根轨迹分析,系统的闭环的主导极点=?,观看系统的单位阶跃响应,nmb,=k1*1 4 3;,denb,=1 5 6+k1 k1;,step(numb,denb,),实验,3,应用,Matlab,进行根轨迹分析,分析系统的单位阶跃响应的解析式,nmc,=k1*1 4 3;,denc,=1 5 6+k1 k1 0;,r,p,k=,residue(numc,denc,),r=,p=,k=,实验,3,应用,Matlab,进行根轨迹分析,例题3 某单位反馈控制系统的开环传递函数为,绘制系统的根轨迹,确定当系统的阻尼比为0.7时系统的闭环极点,并分析系统的性能。,解:绘制根轨迹,nm=4 3 1;,den=3 5 1 0;,sgrid,rlocus(num,den,),k,p=,rlocfind(num,den,),K=0.27552,P=-1.7908,-0.1623+0.1653j,实验,3,应用,Matlab,进行根轨迹分析,例题3 某单位反馈控制系统的开环传递函数为,绘制系统的根轨迹,确定当系统的阻尼比为0.7时系统的闭环极点,并分析系统的性能。,解:整理成标准形式,绘制根轨迹,nm=1 3/4 1/4;,den=1 5/3 1/3 0;,sgrid,rlocus(num,den,),k,p=,rlocfind(num,den,),K=0.27552,P=-1.7908,-0.1623+0.1653j,实验,3,应用,Matlab,进行根轨迹分析,习题4-6 某单位反馈控制系统的开环传递函数为,绘制系统的根轨迹,确定当系统的阻尼比为0.7时系统的闭环极点,并分析系统的性能。,解:整理成标准形式,绘制根轨迹,nm=1 3/4 1/4;,den=1 5/3 1/3 0;,sgrid,rlocus(num,den,),k,p=,rlocfind(num,den,),实验,4,应用,Matlab,进行频域分析,Matlab,函数有,bode,logsapce,margin,绘制系统的频率特性图,bode,bode(num,den),nm=5*0.1 1;,d1=conv(0.5 1,1/2500 0.6/50 1);,den=d1 0;,bode(num,den),mag,phase,=bode(num,den);,实验,4,应用,Matlab,进行频域分析,Matlab,函数有,bode,logsapce,margin,w:,rad/s,完全指定频率可用,logspace,函数说明,扫描翻译书的,p377,介于10,a,与10,b,之间的,n,个点,
展开阅读全文