您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 传递函数到状态空间的实现
学生姓名:刘吕学号:20121562实验题目:传递函数到状态空间的实现课程名称:计算机仿真一、实验目的:理解并掌握传递函数转换为状态空间方程的方法理解状态初值的计算方法二、实验内容:应用MATLAB编写一个可以实现传递函数到状态空间方程的可控可观规范型的m文件。并用相应例题验证程序的正确性。完善该程序使其可以用来计算状态初值。并用相应的例题验证程序的正确性。程序中需要考虑分子分母同阶以及分母首系数不为1的两种情况。三、报告内容:(1)给出m文件的程序框图,及验证结果,并记录出现的错误,并给出解决的方案。若没有得到解决,请说清楚你的问题(2)状态初值的求解,请给出相应的验证结果,并计算与精确解之间的误差。四、实验原理:1、传递函数为10111011()nnnnnnnnbsbsbsbGsasasasa……其状态空间模型能控标准型为:12101000010nnnAaaaa……………………001B…,0101101nnnnCbbabbabba…,nDb能观标准型为:000,,TTTAABCCB,ToDD2、计算状态变量初值:11211221'22321''333(2)11(1)(0)1(0)-(0)10(0)0(0)(0)(0)1(0)(0)100(0)nnnnnnnnnnnnnxaaayccccxaayccxaycxayxy………………………………………………………'''(3)1(2)(0)(0)(0)(0)00(00nnuuucuu……………………………………………五、程序流图开始(清零)化为首1是否同阶结束利用zeros\size构建A,B阵首项系数是否为1建立C,D阵能控型——能观型输入y,u根据公式得出A,B计算出初值X0根据公式写出C,DYNYN六、程序运行2322343456ssGsss运行得:七、实验小结通过本次实验,我了解了如何通过matlab的编程来实现传递函数转化为状态空间方程的能控和能观标准型,并掌握了程序的状态初值的求解。其中,在解决初值问题的时候,我开始一点头绪都没有,在请教身边的同学后,经过仔细的研究,我慢慢有了一点思路。在做实验的时候还是遇到了不小的问题,但是我想经过了这一次之后,我对matlab有了更深一步的了解,下次实验做起来也会更从容一点。程序:clc;clearall;closeall;num=input('pleaseinputnum');den=input('pleaseinputden');a=den(1,1);num=num/a,den=den/a;%解决首1问题,分子分母同除aG=tf(num,den);disp('传递函数为:');b=length(num);c=length(den);%求分子、分母维数ifbc;m=eye(c-2,c-2);n=zeros(c-2,1);r=-fliplr(den);e=r(1:1,1:c-1);v=[n,m];Ac=[v;e]%A阵Bc=[n;1]%B阵num=-fliplr(num);Cc=[num]%C阵Ao=Ac'Bo=Cc'Co=Bc'endifb==c;m=eye(c-2,c-2);n=zeros(c-2,1);r=-fliplr(den);e=r(1:1,1:c-1);v=[n,m];Ac=[v;e]%A阵Bc=[n;1]%B阵g=num(1,1);C=[];forx=1:1:b;t=num(1,b);p=num(1,c);C=[C;[t-p*g]];b=b-1;c=c-1;endCc=C%C阵Ao=Ac'Bo=Cc'Co=Bc'endden1=fliplr(den);q=zeros(length(den));q(1,:)=[den1(2:end),1];fori=2:length(den)q(i,:)=[q(i-1,2:end),0];endy0=input('输入y0');u0=input('输入u0');q2=zeros(length(den),length(den)-1);q2(1,:)=-Cc(1,1:end)fori=2:1:length(den)q2(i,:)=[q2(i-1,2:end),0];endqy0q2u0x0=q*y0+q2*u0
本文标题:传递函数到状态空间的实现
链接地址:https://www.777doc.com/doc-4556097 .html