现代控制原理matlab实验报告实验一.利用MATLAB进行线性系统的模型转换及联结一.实验目的1、学习系统状态空间模型的建立方法、了解状态空间模型与传递函数、零极点模型之间相互转换的方法;2、通过编程、上机调试,掌握系统状态空间模型与传递函数相互转换的方法。3、通过编程、上机调试,掌握系统模型的联结方法。二.实验步骤1、根据所给系统的已知条件,如传递函数、零极点模型或(A、B、C、D),实现状态空间模型、传递函数模型、零极点增益模型之间的转换,采用MATLAB的相关函数编写m-文件。2、应用系统建模工具,并联、串联、闭环、反馈等函数解决实际问题。3、在MATLAB界面下调试程序。三.实验要求1.在运行以上例程序的基础上,应用MATLAB求下面传递函数阵的状态空间实现232252()234sssGssss提示:num=[0012;0153]解:num=[0012;0152];den=[1234];[A,B,C,D]=tf2ss(num,den)A=-2-3-4100010B=100C=012152D=002.一个双输入双输出系统112233412311022711353xxxxuxx11223120011xyxyx求出此模型的能控标准型和能观标准型。提示:写出两个子系统的传递函数模型,进而求出这两个传递函数模型的能控标准型实现或能观标准型实现,讨论是否能通过子系统的能控标准型实现或能观标准型实现求出原来系统的能控标准型和能观标准型。解:A=[41-2;102;1-13];B=[31;27;53];C=[120;011];D=[0];[num1,den1]=ss2tf(A,B1,C1,D)[num2,den2]=ss2tf(A,B2,C2,D)得到:num1=07.0000-19.0000-36.0000den1=1.0000-7.000015.0000-9.0000num2=010.0000-60.000098.0000den2=1.0000-7.000015.0000-9.0000实验二.利用MATLAB求取线性系统的状态空间模型的解并分析其稳定性一.实验目的1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;2、了解系统稳定性的判定方法(直接法和间接法);3、通过编程、上机调试,掌握系统运动的分析方法。二.实验步骤1、构建系统的状态空间模型,采用MATLA的m-文件编程;2、求取系统的状态和输出响应;3、分析系统的稳定性;4、在MATLA界面下调试程序,并检查是否运行正确。三.实验要求1、在运行以上程序的基础上,应用MATLAB验证一个振动现象可以由以下系统产生:01()10xtx证明该系统的解是cossin()(0)sincosttxtxtt假设初始条件0(0)1x,用Matlab观察该系统解的形状。A=[01;-10];x0=[0;1];[y,x,t]=initial(A,B,C,D,x0);subplot(2,1,1),plot(t,x(:,1))xlabel('Time(sec)'),ylabel('X_1')gridsubplot(2,1,2),plot(t,x(:,2))xlabel('Time(sec)'),ylabel('X_2')gridtitle('ResponsetoInitialCondition')050100150200250300350400450500-1.5-1-0.500.511.5Time(sec)X1050100150200250300350400450500-1.5-1-0.500.511.5Time(sec)X2ResponsetoInitialCondition解:2、设系统的状态方程为1123xx试分析平衡点的稳定性。解:A=[-11;2-3];M=eig(A)%观察其特征值是否全为负值;Q=[10;01];P=lyap(A,Q)%观察P是否是正定矩阵;得到:M=-0.2679-3.7321P=1.37500.87500.87500.7500因为特征值都是负值,P是正定矩阵,故在平衡点处稳定。实验三利用MATLAB导出连续状态空间模型的离散化模型1、在运行以上程序的基础上,针对线性定常连续系统的状态空间模型100()()(),10021xtxtutyx设采样周期1T秒,试求离散化状态空间模型。执行以下的m-文件:A=[-10;0-2];B=[0;1];[G,H]=c2d(A,B,1)得到:G=0.3679000.1353H=00.43232、分析不同采样周期下,离散化状态空间模型的结果。T=0.5时,A=[-10;0-2];B=[0;1];[G,H]=c2d(A,B,0.5)得到:G=0.6065000.3679H=00.3161T=2时,A=[-10;0-2];B=[0;1];[G,H]=c2d(A,B,2)得到:G=0.1353000.0183H=00.4908实验五利用MATLAB求解极点配置问题一.实验目的1、学习极点配置状态反馈控制器的设计算法;2、通过编程、上机调试,掌握系统极点配置设计方法。二.实验步骤1、极点配置状态反馈控制器的设计,采用MATLAB的m-文件编程;2、在MATLAB界面下调试程序,并检查是否运行正确。三.实验要求1、在运行以上程序的基础上,针对状态空间模型为01034132xxuyx的被控对象设计状态反馈控制器,使得闭环极点为-4和-5,并讨论闭环系统的稳态性能。解:A=[01;-3-4];B=[0;1];C=[32];D=[0];[num,den]=ss2tf(A,B,C,D)num=02.00003.0000den=143对给定的初始状态(0)x,可以应用MATLAB提供的函数initial画出闭环系统的状态响应曲线A=[01;-3-4];B=[0;1];sys=ss(A,[0;0],eye(2),0);t=0:0.01:4;x=initial(sys,[1;0],t);x1=[10]*x';x2=[01]*x';subplot(2,1,1);plot(t,x1),gridtitle('ResponsetoInitialCondition')ylabel('x1')subplot(2,1,2);plot(t,x2),gridylabel('x2')A=[01;-3-4];B=[0;1];C=[32];D=0;step(A,B,C,D)配置极点后的系统:对给定的初始状态(0)x,可以应用MATLAB提供的函数initial画出闭环系统的状态响应曲线。A=[01;-3-4];B=[0;1];J=[-4-5];K=place(A,B,J);sys=ss(A-B*K,[0;0],eye(2),0);t=0:0.01:4;x=initial(sys,[1;0],t);x1=[10]*x';x2=[01]*x';subplot(2,1,1);plot(t,x1),gridtitle('ResponsetoInitialCondition')ylabel('x1')subplot(2,1,2);plot(t,x2),gridylabel('x2')A=[01;-3-4];B=[0;1];C=[32];D=0;J=[-4-5];K=place(A,B,J)K=17.00005.0000A=[01;-3-4];B=[0;1];C=[32];D=0;K=[175];step(A-B*K,B,C,D)比较原系统与配置极点后的状态响应曲线和输出曲线,配置极点后的状态响应曲线响应速度比原系统快速,但极点配置可以改变了系统的稳态性能,配置极点后的输出曲线稳态误差加大,由原来的0变为0.85,出现超调量,调节时间减小,有原来的4左右变为1.8左右,可见极点配置可以改变了系统的稳态性能及动态性能。2、分析极点配置对稳态性能有何影响?如何消除对稳态性能的负面影响?解:控制系统的性能主要取决于系统极点在根平面上的分布,而极点配置的目的就是寻找合适的期望极点,通过选择反馈增益矩阵,将闭环系统的极点敲好配置在根平面上所期望的位置,以获得所希望的动态性能,所以极点配置可以很好的改善或者决定系统的稳态性能。消除对稳态性能的负面影响需要正确的进行极点配置,选择合适的极点使稳态误差不要过大,合理的选择可以消除稳态误差,满足性能要求3、受控系统的传递函数为220()2020Gsss根据性能指标设计状态反馈控制器,将希望极点配置为*1,27.077.07j解:num=[020];den=[12020];[A,B,C,D]=tf2ss(num,den)A=-20-2010B=10C=020D=0求取配置极点后的K:A=[-20-20;10];B=[1;0];J=[-7.07+j*7.07-7.07-j*7.07];K=place(A,B,J)K=-5.860079.9698求配置极点后的传递函数:A=[-20-20;10];B=[1;0];C=[020];D=[0];J=[-7.07+j*7.07-7.07-j*7.07];K=place(A,B,J);[num,den]=ss2tf(A-B*K,B,C,D)num=0020den=1.000014.140099.9698对给定的初始状态(0)x,可以应用MATLAB提供的函数initial画出闭环系统的状态响应曲线。A=[-20-20;10];B=[1;0];J=[-7.07+j*7.07-7.07-j*7.07];K=place(A,B,J)sys=ss(A-B*K,[0;0],eye(2),0);t=0:0.01:4;x=initial(sys,[1;0],t);x1=[10]*x';x2=[01]*x';subplot(2,1,1);plot(t,x1),gridtitle('ResponsetoInitialCondition')ylabel('x1')subplot(2,1,2);plot(t,x2),gridylabel('x2')K=-5.860079.96984、输出(线性)反馈能使系统极点任意配置吗?解:不能。对完全能控的单输入—单输出系统0=(A,b,c),不能采用输出线性反馈来实现闭环系统极点的任意配置。不管怎样选择h,也不能使根轨迹落在那些不属于根轨迹的期望极点位置上,定理因此得证。5、若系统的某个状态不能直接测量,你能用什么方法构成全状态反馈?解:根据X的状态矢量的估计值进行计算。