您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > matlab作业简要分析
t=0:0.1:30;y=1-2*exp(-t).*sin(t);plot(t,y);xlabel('Time');ylabel('Amplitude');title('Decaying-oscillatingExponential');FOR语句:S=0;form=1:100S=S+m^2;ifS=1000break;end每一个环节都对应一个ENDendS=S-m^2m=m-1WHILE语句:S=0;m=0;whileS1000m=m+1;S=S+m^2;endS=S-m^2m=m-1K=6;Z=[-3];P=[-1;-2;-5];[num,den]=zp2tf(Z,P,K)ZP零极点模型TF传递函数模型SS状态空间模型tf(num,den)[A,B,C,D]=zp2ss(Z,P,K)ss(A,B,C,D)num1=[10];den1=[11];num2=[1];den2=[20.5];num3=[540];den3=[1];num4=[0.1];den4=[1];[na,da]=series(num1,den1,num2,den2);[nb,db]=feedback(na,da,num4,den4);[nc,dc]=series(num3,den3,nb,db);[num,den]=cloop(nc,dc);cloop:单位反馈系统闭环函数tf(num,den)num1={11;01};分子写一个矩阵den1={[11],[12];1,[10]};分母写一个矩阵G1=tf(num1,den1)传递函数矩阵num2={11;10};den2={[13],[11];[11],1};G2=tf(num2,den2)Gs=series(G1,G2)串联Gp=parallel(G1,G2)并联num=7*[23];den=conv([10],conv([10],conv([31],conv([12],conv([12],[5038])))));tf(num,den)numo=[20];deno=[1836400];[numc,denc]=cloop(numo,deno);cloop:单位反馈系统闭环函数t=0:0.1:10;y=step(numc,denc,t);单位阶跃响应曲线,t为仿真时间plot(t,y);Mp=((max(y)-1)/1)*100;disp(['超调量Mp=',num2str(Mp),'%']);disp:屏幕输出函数num2str:把数值转换成字符串wn=6;zeta=[0.2:0.2:1.0,2.0];figure(1);holdonholdon:在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在fori=zetanum=wn^2;den=[12*i*wnwn^2];step(num,den);gtext(num2str(i));gtext:图片注释,标题endnumo=[1];deno=conv([10],conv([0.11],[0.23]));[numc,denc]=cloop(numo,deno);cloop:单位反馈系统闭环函数t=0:0.1:30;r=t;lsim(numc,denc,r,t)[y,x]=lsim(num,den,u,t):u为系统输入信号,t为仿真时间,针对线性时不变模型,给定任意输入,得到输出响应。num=[15];den=conv([10],conv([12],[13]));rlocus(num,den);K=rlocfind(num,den)%移动鼠标到根轨迹与实轴上的交点,得到增益KRlocus格式:[r,k]=rlocus(n,d)[r,k]=rlocus(g)[r,k]=rlocus(n,d,k)[r,k]=rlocus(g,k)函数可计算出或画出SISO系统的根轨迹,其中g(或n,d)为对象模型,输入变量k为用户自已选择的增益向量,当k缺省时则为系统自动生成增益向量k,返回变量r为根轨迹各个点构成的复数矩阵.如果在函数调用中不返回任何参数,则rlocus函数在当前窗口中画出系统的根轨图。numo=[12];deno=conv([143],[143]);figure(1);rlocus(numo,deno);K0=rlocfind(numo,deno)%移动鼠标到根轨迹与虚轴上的交点,得到增益K0,使闭环系统稳定K的取值范围为:0KK0。K1=10;[numc1,denc1]=cloop(K1*numo,deno);figure(2);impulse(numc1,denc1);impulse是脉冲信号输入这个传递函数后出来的脉冲响应函数图impulse(sys,t)sys可以使传递函数,也可以是zpk也可以是状态函数t为响应时间gtext('K=10');根轨迹图上点击了虚轴上的交点之后,会出现K=10的脉冲响应,点击图中会出现K=10的标题K2=100;[numc2,denc2]=cloop(K2*numo,deno);figure(3);impulse(numc2,denc2);gtext('K=100');图二点击之后会出现K=100的脉冲响应,点击图中会出现K=100的标题当题目需要分析稳定性的时候,点击虚轴交点,脉冲响应曲线发散和收敛的情况各有不同。numo=[-12];deno=conv([10],[13]);rlocus(numo,deno);K1=rlocfind(numo,deno)K2=rlocfind(numo,deno)%移动鼠标到根轨迹与虚轴上的交点,得到增益K1,再移动鼠标到根轨迹实轴上的分离点,得到增益K2%使闭环系统响应为衰减振荡K的取值范围为:K2KK1。wn=6;w=logspace(-1,1,100);num=wn^2;figure(1);forzeta=[0.2:0.2:1.0]ζ用zeta来代替den=[12*zeta*wnwn^2];bode(num,den,w);[m,p]=bode(num1,den1,w);%按照w为横坐标,生成bode图,m为幅频,p为相频holdon;gridgtext(num2str(zeta));依次点击会出现0.2,0.4,0.6,0.8.1.0的曲线endlogspace(a,b,n),其中a、b、n分别表示开始值(10^a)、结束值(10^b)、元素个数(n),生成从10的a次方到10的b次方之间按对数等分的n个元素的行向量。n如果省略,则默认值为50。系统稳定的充要条件为:Nyquist曲线按逆时针包围临界点(-1,j0)的圈数N,等于开环传递函数位于s右半平面的极点数P;否则闭环系统不稳定,闭环正实部特征根个数Z=P-N。若刚好过临界点,则系统临界稳定num=[0.5];den=[1210.5];[z,p]=tf2zp(num,den)ii=find(real(p)0);求右半平面实轴的极点数P=length(ii)nyquist(num,den);N=0Z=P-NifZ==0disp('Stable');elsedisp('Unstable');endz=[];p=[0-1-10];k=10;[numo,deno]=zp2tf(z,p,k);[Gm,Pm]=margin(numo,deno)margin函数可以从频率响应数据中计算出幅值裕度,相角裕度以及对应的频率,幅值裕度和相角裕度是针对开环系统而言,指示出系统闭环的相对稳定性,可在当前图形窗口中绘制出带有裕度以及相应频率显示的波特图,其中幅值裕度已分贝为单位[re,im.w]=nyquist(num,den)[mag,phase,w]=bode(num,den,w)[gm,pm,wcp,wcg]=margin(num,den)对应解释:re:奈奎斯特在频率为w时,频率响应的实部;im:奈奎斯特在频率为w时,频率响应的虚部;w:响应频率(单位:rad/sec)mag:波特图在频率为w时,频率响应的幅值;phase:波特图在频率为w时,频率响应的相位;w:响应频率(单位:rad/sec)gm:幅值裕度;pm:相角裕度;wcp:相角交界频率;wcg:截止频率;对于线性时变系统,如果对取定初始时刻t0的一个非零初始状态x0,存在一个时刻t1,(t1t0),和一个无约束的容许控制u(t),t∈[t0,t1],使状态由x0转移到t1时x(t1)=0,则称此x0是在t0时刻为能控的。A=[10;-10];B=[1;0];n=length(A);矩阵A的最大长度Uc=ctrb(A,B);能控性ifrank(Uc)==nrank函数是求矩阵的秩,一个向量组的极大线性无关组所含向量的个数称为这个向量组的秩.disp('系统状态能控');elsedisp('系统状态不能控');end对于线性时变系统,如果对取定初始时刻t0的一个非零初始状态x0,存在一个有限时刻t1,(t1t0),使对所有的t∈[t0,t1],有y(t)=0,则称此x0是在t0时刻为不能观测的。A=[010;001;-2-4-3];C=[00-1;121];n=length(A);Vo=obsv(A,C);ifrank(Vo)==ndisp('系统状态能观测');elsedisp('系统状态不能观测');endz=[];p=[0-1-2];k=10;[A,b,c]=zp2ss(z,p,k);极点型转状态空间n=length(A);rc=rank(ctrb(A,b));先判断能控性ifrc==ndisp('系统状态能控');P=[-2-1+j-1-j];K=acker(A,b,P)acker函数:A,B为系统的状态空间矩阵,向量P中是期望的闭环极点位置,返回值是增益向量。endt=[0:0.05:20]';这边一定要注意上头的引号不要漏掉!!!(⊙o⊙)要转置成一个列向量!!!!Tf=20;ut=[t,10*ones(size(t))];ut表示左列是t,右列是全是10的,个数为t阵列长的矩阵[t,x,y]=sim('Xiti8_6',Tf,[],ut)sim(‘刚才建立的SIM模型名称,要和m文件放在一个文件夹里面’,运行时间Tf,选项可以不写,ut);plot(t,y)2100()4100Gsss判断该系统是否为欠阻尼系统,若为欠阻尼系统,计算阶跃响应的过渡过程时间num=100;den=[14100];wn=sqrt(num);kesi=den(2)/2/wn;ifkesi1disp('此系统为二阶欠阻尼系统');(5分)t=0:0.01:5;y=step(num,den,t);N=length(t);yss=y(N);(3分)i=N;whileabs(y(i)-yss)/yss=0.05i=i-1;endTs=t(i)(5分)end111xAxBuyCx3()Gs2()Gs1u2u1y2y3u4u4y5y3y建立以1u、2u为输入,1y、3y、4y为输出的系统模型。其中3111233216910463231268240021252(1),,,(),()4791122802235212512131410ssssABCGsGsssssA1=[16910;31268;47911;5121314];B1=[46;24;22;10];C1=[0021;8022];D1=zeros(2,2);(2分)num2=[0032;1025];den2=[3521];[A2,B2,C2,D2]=tf2ss(num2,den2);[A,B,C,D]=append(A1,B1,C1,D1,A2,B2,C2,D2);(4分)Z3=-1;P3=-2;K3=2;[A3,B3,C3,D3]=zp2ss(Z3,P3,K3);[Aa,Ba,Ca,Da]=append(A,B,C,D,A3,B3,C3,D3);%将两个单输入输出系统连接,组合成
本文标题:matlab作业简要分析
链接地址:https://www.777doc.com/doc-2887141 .html