第三章线性系统分析与设计3.1概述3.2线性系统的描述3.3模型之间的转换3.4时域响应分析3.5频域响应分析3.6根轨迹分析3.7极点配置设计3.8二次型最优调节器设计3.1概述MATLAB可以实现对线性系统的时域或频域分析、设计与建模,利用的就是工具箱中的各种算法,这些算法大部分都是M文件,可以直接调用。MATLAB既可以处理连续的系统,也可以处理离散系统。根据控制系统描述方法的不同,如系统是用传递函数来表达,还是用状态空间来表达,可以选择经典的或现代的控制技术来处理。不仅如此,还可以利用MATLAB提供的函数来进行模型之间的转化。3.1概述对于经典的控制系统分析中常用的一些分析方法,如时间响应、频率响应、根轨迹等,MATLAB都能够很方便地进行计算并能以图形的形式表达出结果。也能利用函数来进行极点配置、最优控制等方面的现代控制理论分析与设计。当被控对象的模型未知时,可以利用MATLAB辨识工具箱中提供的函数对被控对象进行辨识和建模,然后根据需要再选择各种系统分析和设计方法。还可以编制自己的M文件来任意添加工具箱中原来没有的工具函数。3.2线性系统的描述MATLAB控制系统工具箱处理的系统是线性时不变(LTI)系统。对系统描述的方法可以采用经典的方法,也可以采用现代的方法,各种描述方法之间可以相互转换。3.2线性系统的描述3.2.1连续系统的数学描述•传递函数描述法对于一个连续单输入单输出(SISO)的LTI系统,设系统输入量为r(t),输出量为c(t),则系统的微分方程为:对应的传递函数定义为:在零初始条件下,系统输出量的拉氏变换C(s)与输入量的拉氏变换R(s)之比:传递函数分子、分母均按‘s’的降幂排列。1121111211d()d()d()...()dddd()d()d()...()dddnnnnnnmmmmmmctctctaaaacttttrtrtrtbbbbrtttt11211121...()()()()...()mmmnnnbsbsbCsnumsGsRsasasadens3.2线性系统的描述3.2.1连续系统的数学描述•传递函数描述法在MATLAB里,用命令函数tf()来建立控制系统的传递函数模型,该函数的调用格式为:sys=tf(num,den)。函数返回的变量sys为连续系统的传递函数模型。例如已知连续系统的传递函数为G(s)=1/(s2+3s+2),可在窗口键入num=[0,0,1];den=[132];s1=tf(num,den)运行结果为Transferfunction:1-------------s^2+3s+2121121[,,...,][,,...,]mnnumbbbdenaaa3.2线性系统的描述3.2.1连续系统的数学描述•传递函数描述法对于多输入多输出(MIMO)系统,上述的num为矩阵,其行数与输出y的个数相同,其列数与输入变量的个数相同。例:MIMO系统传递函数为G(s),在命令窗口输入nums={1[10];[-12]3};H=tf(nums,[10.3])可得Transferfunctionfrominput1tooutput...1-s+2#1:-------#2:-------s+0.3s+0.3Transferfunctionfrominput2tooutput...s3#1:-------#2:-------s+0.3s+0.310.30.3()230.30.3sssGssss3.2线性系统的描述3.2.1连续系统的数学描述•传递函数描述法例2:N={[1-1];[12]};%cellarrayfornumeratorN(s)D={[11];[145]};%cellarrayfordenominatorD(s)H=tf(N,D)Or:h11=tf([1-1],[11]);h21=tf([12],[145]);h=[h11;h21](note:h=[h11h21])3.2线性系统的描述3.2.1连续系统的数学描述•零极点描述法连续系统传递函数表达式用系统增益、系统零点和系统极点来表示的,叫做系统零极点增益模型。它是传递函数模型的一种特殊形式。即式中,k为系统增益,z1、z2、zm为系统零点,p1、p2、pn为系统极点。在MATLAB中,可用向量z、p、k构成的向量组表示系统。在MATLAB中,用函数命令zpk()来建立系统零极点增益模型,其调用格式:sys=zpk(z,p,k),函数返回的变量sys为系统的零极点增益模型。1212()()...()()()()...()mnszszszGskspspsp1212[,,...,][,,...,][]mnzzzzppppkk3.2线性系统的描述3.2.1连续系统的数学描述•零极点描述法例如键入命令k=3;z=[-12];p=[-3-4-5];s3=zpk(z,p,k)运行结果Zero/pole/gain:3(s+12)-----------------(s+3)(s+4)(s+5)考虑一个单输入多输出(SIMO)系统,键入命令k1=[3;4];z1={[-12];[-1-2]};p1={[-3-4-5];[-3-4-5]};s4=zpk(z1,p1,k1)运行结果Zero/pole/gainfrominputtooutput...3(s+12)4(s+1)(s+2)#1:-----------------#2:-----------------(s+3)(s+4)(s+5)(s+3)(s+4)(s+5)3.2线性系统的描述3.2.1连续系统的数学描述•零极点描述法例:h1=zpk(0,[1-i1+i2],-2)h2=zpk([],[1-i1+i2],-2)H=[h1h2](H=[h1;h2])3.2线性系统的描述3.2.1连续系统的数学描述•状态空间描述法控制系统在主要工作区域内的一定条件下可近似为线性时不变模型,连续LTI系统总能用一阶微分方程组表示,写成矩阵形式即为状态空间模型:其中(a)由n个一阶微分方程组成,即状态方程,(b)由1个线性代数方程组成,即输出方程,u(t)是r*1的系统控制输入向量,x(t)是n*1的系统状态变量,y(t)则是m*1的系统输出向量。A是n*n的状态矩阵,由控制对象的参数决定,B是n*r的输入矩阵,C是m*n的输出矩阵,D为m*r的输入输出矩阵。()()().............()()()().............()xtAxtButaytCxtDutb3.2线性系统的描述3.2.1连续系统的数学描述•状态空间描述法在MATLAB中,用函数ss()来建立控制系统的状态空间模型。ss()函数的调用格式为:sys=ss(a,b,c,d)函数返回的变量sys为连续系统的状态空间模型。输入参量a,b,c,d分别对应于系统的A,B,C,D参数矩阵。例如对于典型的由一对极点组成的系统,假设其自然振荡频率wn=1.5,阻尼比ζ=0.2,其状态空间可描述为11222210102nnnxxuxxyx3.2线性系统的描述3.2.1连续系统的数学描述•状态空间描述法在MATLAB中,实现上述系统的状态空间描述语句为:wn=1.5;z=0.2;a=[01;-wn^2-2*z*wn];b=[0;wn^2];c=[10];d=0;sys=ss(a,b,c,d)运行结果为a=x1x2x101x2-2.25-0.6即可得系统的状态空间表达式为b=u1x10x22.25c=x1x2y110d=u1y10Continuous-timemodel.1122120102.250.62.2510xxuxxxyx3.2线性系统的描述3.2.1连续系统的数学描述•部分分式描述法系统传递函数也可以表示成部分分式和留数的形式。对于单输入单输出系统具体实现时,用列向量p表示传递函数的极点,列向量r表示和极点相对应的留数部分,行向量k表示原传递函数的剩余部分。可用residue函数实现传递函数和部分分式之间的相互转换,调用格式为[r,p,k]=residue(num,den);[num,den]=residue(r,p,k);()(1)(2)()()...()()(1)(2)()numsrrrnHsksdensspspspn3.2线性系统的描述3.2.1连续系统的数学描述•部分分式描述法若系统的传递函数为即b=[53–27]a=[-4083]键入b=[53–27];a=[-4083];[r,p,k]=residue(b,a)回车可得r=-1.4167p=1.5737k=-1.2500-0.6653-1.16441.3320-0.4093结果可以表示成将部分分式反变换为传递函数,键入[b,a]=residue(r,p,k)回车可得b=-1.2500-0.75000.5000-1.7500a=1.0000-0.0000-2.0000-0.7500结果可以表示成323()5327()483bssssasss323()1.250.750.51.75()20.75bssssasss()1.41670.66531.33201.25()1.57371.16440.4093bsassss3.2线性系统的描述3.2.2离散系统的数学描述•状态空间描述法线性时不变离散系统总能用一组一阶差分方程的形式来表示x(n+1)=Ax(n)+Bu(n)y(n)=Cx(n)+Du(n)其中u,x,y分别是相应维数的控制输入向量,状态向量以及输出向量,n表示采样时刻。同连续系统一样,在MATLAB里,离散系统可直接用矩阵组[A,B,C,D]表示。函数ss()同样也可以建立离散系统的状态空间模型,其调用格式为sys=ss(a,b,c,d,Ts),函数返回的变量sys为离散系统的状态空间模型。输入参量a,b,c,d分别对应于系统的A,B,C,D参数矩阵,Ts为采样周期,当Ts=-1或者Ts=[]时,则系统的采样周期未定义。3.2线性系统的描述3.2.2离散系统的数学描述•传递函数描述法对于离散时间系统,常以定常系统线性差分方程来描述。对于SISO的离散系统,其对应的脉冲传递函数为:传递函数分子、分母均按z的降幂排列。在MATLAB里,可直接用分子、分母多项式系数构成的两个向量num、den表示系统。即函数sys=tf(num,den,Ts)可用来建立离散系统的传递函数模型,函数返回的变量sys为离散系统的传递函数模型,num、den分别为系统分子、分母多项式系数向量,Ts为采样周期,当Ts=-1或者Ts=[]时,则系统的采样周期未定义。11211121...()()()()...()mmmnnnbzbzbCznumzGzRzazazadenz121121[,,...,][,,...,]mnnumbbbdenaaa3.2线性系统的描述3.2.2离散系统的数学描述•零极点增益描述法离散系统传递函数也可以用系统增益、系统零点与系统极点来表示。在MATLAB中,离散系统也可用向量z、p、k构成的向量组表示。函数sys=zpk(z,p,k,Ts)建立离散系统的零极点增益模型。Ts为采样周期。1212()()...()()()()...()mnzzzzzzGzkzpzpzp1212[,,...,][,,...,][]mnzzzzppppkk3.3模型之间的转换3.3.1线性系统模型之间的转换解决实际问题时,常常需要对自控系统的数学模型进行转换。在MATLAB中,提供了不同模型之间转换的函数。•ss2tf实现状态空间描述到传递函数形式的转换,基本用法为[