3.机电系统的计算机辅助分析与设计 3.1机电系统的数学模型及其转换方法 机电系统计算机仿真与辅助设计是建立在机电系统数学模型基础之上的。对于各 类机电系统,利用仿真手段对其进行分析与设计,首先就需要建立相应的系统数学 模型,此后,就需要研究如何将系统的数学模型转变为适合于计算机进行分析计算 的仿真模型,即数值算法模型。在此基础上,即可通过对数学模型的求解分析,实 现对系统动静态特性的分析与设计。显然,进行上述工作的重要基础就是系统的数 学模型。因此本章首先介绍系统的几种典型数学描述,然后介绍各种数学模型之间 的相互转换,以及系统环节不同形式的相互连接的 MATLAB实现。 3.1.1连续系统的数学描述 连续系统的数学模型通常可以用微分方程、传递函数、状态空间表达式三种形 式对系统加以描述。下面将简单对这几类数学模型加以回顾,同时给出 MATLAB对 它们的表示方法 1.系统的微分方程形式模型 个系统的动态特性通常可用高阶微分方程加以描述,因此描述一个系统最常 用的数学 模型就是微分方程的形式。假设连续系统为单入单出(简称SISO)系统,其输入与 输出分别用u(t)、y(t)加以表示,则描述系统的高阶微分方程为: y +a1 dr"-l+a :+a (3-1) 其初始条件为:y(t)=y,j)=j,…,u)=l0,in)=i 如果引入微分算子P=,则(3-1)式可以写作:
52 3.机电系统的计算机辅助分析与设计 3.1 机电系统的数学模型及其转换方法 机电系统计算机仿真与辅助设计是建立在机电系统数学模型基础之上的。对于各 类机电系统,利用仿真手段对其进行分析与设计,首先就需要建立相应的系统数学 模型,此后,就需要研究如何将系统的数学模型转变为适合于计算机进行分析计算 的仿真模型,即数值算法模型。在此基础上,即可通过对数学模型的求解分析,实 现对系统动静态特性的分析与设计。显然,进行上述工作的重要基础就是系统的数 学模型。因此本章首先介绍系统的几种典型数学描述,然后介绍各种数学模型之间 的相互转换,以及系统环节不同形式的相互连接的 MATLAB 实现。 3.1.1 连续系统的数学描述 连续系统的数学模型通常可以用微分方程、传递函数、状态空间表达式三种形 式对系统加以描述。下面将简单对这几类数学模型加以回顾,同时给出 MATLAB 对 它们的表示方法。 1.系统的微分方程形式模型 一个系统的动态特性通常可用高阶微分方程加以描述,因此描述一个系统最常 用的数学 模型就是微分方程的形式。假设连续系统为单入单出(简称 SISO)系统,其输入与 输出分别用 u(t)、y(t)加以表示,则描述系统的高阶微分方程为: c u dt d u c dt d u c a y dt dy a dt d y a dt d y a dt d y n n n n n n n n n n n n n = + + + + + + + + − − − − − − − − − 2 2 1 2 1 1 2 1 2 1 2 1 1 (3-1) 其初始条件为: ( ) 0 0 y t = y , ( ) 0 0 y t = y ,…, ( ) 0 u0 u t = , ( ) 0 u0 u t = ,… 如果引入微分算子 dt d p = ,则(3-1)式可以写作:
Py+a1p"y+……+an1py+any=c1pl+c2pl+…+cnl 即 an-iP 对上式稍加整理并令a0=1,可以得到 n-ip 2.系统传递函数形式模型 1)传递函数模型 对(3-1)式等号两边取拉氏变换,并假设y与u的各阶导数的初值均为零, 则存在 s"Y(s)+a;s"4Y(s)+…+an-1sY(s)+anF(s) (3-3) csm-lU(S)+C2sm-AU(s)+.+c,U(s) 式中:Y(s)—一输出yt)的拉氏变换; U()输入()的拉氏变换 从而(3-1)式所描述的系统的传递函数为 G(s) (s) CIs-l+C25"-+.+Cm-S+c (3-4) s+a1S+a2S+…+an1S+an 对照(3-2)式与(3-4)式可以清楚地看出,当描述系统的微分方程的初始值为零时, 用算子p所表示的式子与传递函数G(S)在形式上完全相同。 传递函数是经典控制论描述系统的数学模型之一,它表达了系统输入量和输出 量之间的关系。它只与系统本身的结构、特性和参数有关,而与输入量的变化无关 传递函数是研究线性系统动态响应和性能的重要手段与方法。在 MATLAB语言中 可以利用分别定义的传递函数分子、分母多项式系数向量方便地对其加以描述。例 如对于(3-4)式,系统可以别定义传递函数的分子、分母多项式系数向量为
53 p y a p y a py a y c p u c p u cnu n n n n n n + + + + = + + + − − − 1 −1 1 1 1 2 2 即 a p y c p u i n i n i j n j n j − = − = − = 1 0 0 对上式稍加整理并令 a0 = 1 ,可以得到 = − − = − = n j j n j n i i n i a p c p u y 0 1 0 (3-2) 2.系统传递函数形式模型 1) 传递函数模型 对(3-1)式等号两边取拉氏变换,并假设 y 与 u 的各阶导数的初值均为零, 则存在 ( ) ( ) ( ) ( ) c s U(s) c s U(s) c U(s) s Y s a s Y s a sY s a Y s n n n n n n n = + + + + + + + − − − − 2 2 1 1 1 1 1 (3-3) 式中: Y(s)——输出 y(t) 的拉氏变换; U(s)——输入 u(t) 的拉氏变换。 从而(3-1)式所描述的系统的传递函数为 ( ) ( ) ( ) n n n n n n n n n s a s a s a s a c s c s c s c U s Y s G s + + + + + + + + + = = − − − − − − 1 2 2 1 1 1 2 2 1 1 (3-4) 对照(3-2)式与(3-4)式可以清楚地看出,当描述系统的微分方程的初始值为零时, 用算子 p 所表示的式子与传递函数 G(S)在形式上完全相同。 传递函数是经典控制论描述系统的数学模型之一,它表达了系统输入量和输出 量之间的关系。它只与系统本身的结构、特性和参数有关,而与输入量的变化无关, 传递函数是研究线性系统动态响应和性能的重要手段与方法。在 MATLAB 语言中, 可以利用分别定义的传递函数分子、分母多项式系数向量方便地对其加以描述。例 如对于(3-4)式,系统可以别定义传递函数的分子、分母多项式系数向量为
nm[e1c2…Cn1ca] de=[lana2…an1an] 这里分子、分母多项式系数向量中的系数均按s的降幂排列,由于传递函数G(s)的 最高次项系数为1,所以分母多项式系数向量dem中第一个元素为1。在 MATLAB 5x中,可以用t来建立传递函数的系统模型,其基本格式为 s=tf(num, den) 例3-1已知系统传递函数为 2s+9 s4+3s3+a2s3+4s+6 解:可以利用 MATLAB将上述系统模型表示出来,并将其建立在工作空间 ( Workspace)中,写成 num den=[12346] printsys(num, den, 's') 执行上述语句后得到 num/den= 2s+9 4+3s^3+2s^2+4s+6 对于 MATLAB5.x可以利用tf直接建立系统模型,即 den=[13246] model=tf(num, den) 执行上述语句后得 Transfer function s^4+3s^3+2s^2+4s+6 由上例可以看出,对于 MATLAB的不同版本建立的传递函数有所不同,但结果 是一致的。下面考虑一种较复杂的传递函数形式。 例3-2已知系统传递函数为 7(2s+3 s2(3s+1)s+2)( 解:可以利用 MATLAB建立其相应的传递函数系统模型。 num=7*[23] den=conv(conv(conv([1,0,0],[3,1]),conv([12],[1,2]),[5,0,3,8]); model=tf (num den)
54 num=[ c1 c2…cn-1 cn] den=[1 a1 a2…an-1 an] 这里分子、分母多项式系数向量中的系数均按 s 的降幂排列,由于传递函数 G(s)的 最高次项系数为 1,所以分母多项式系数向量 den 中第一个元素为 1。在 MATLAB 5.X 中,可以用 tf 来建立传递函数的系统模型,其基本格式为 sys=tf(num,den) 例 3-1 已知系统传递函数为 ( ) 3 2 4 6 2 9 4 3 3 + + + + + = s s a s s s G s 解:可以利用 MATLAB 将上述系统模型表示出来,并将其建立在工作空间 (Workspace)中,写成 num=[2 9]; den=[1 2 3 4 6]; printsys(num,den,'s') 执行上述语句后得到 num/den= 2s+9 s ^ 4 + 3 s ^ 3 + 2 s ^ 2 + 4 s + 6 对于 MATLAB 5.x 可以利用 tf 直接建立系统模型,即 num=[2 9]; den=[1 3 2 4 6]; model=tf(num,den) 执行上述语句后得 Transfer function: 2s+9 s ^ 4 + 3 s ^ 3 + 2 s ^ 2 + 4 s + 6 由上例可以看出,对于 MATLAB 的不同版本建立的传递函数有所不同,但结果 是一致的。下面考虑一种较复杂的传递函数形式。 例 3-2 已知系统传递函数为 ( ) ( ) (3 1)( 2) (5 3 8) 7 2 3 2 2 3 + + + + + = s s s s s s G s 解:可以利用 MATLAB 建立其相应的传递函数系统模型。 num= 7*[2 3]; den= conv(conv(conv([1,0,0],[3,1]),conv([1 2],[1,2])),[5,0,3,8]); model=tf(num,den)
运行结果 Transfer function 4s+21 15s^8+65s^7+89s^6+83s^5+152s^4+140s^3+32s^2 在这里使用了conv函数,它是 MATLA B中的标准函数,用来求取两个向量的 卷积分。因此当两个多项式相乘,需两个多项式系数向量相乘时,就可利用conv函 数来进行。conv函数允许多重嵌套,由上例已清楚地看到这一点。 对于连续时间系统可以用传递函数对其加以表示,而对于离散时间系统则应采 用脉冲传递函数对其进行描述。脉冲传递函数一般可表示为关于z的降幂多项式分 式形式,即 +cm-1二 +c12+c U(=)an+an-12+…+a12+ao 在MA∏LAB5.0中,对于离散系统同样可以建立相应的系统模型,其基本格式为 sys=tf(num, den, T) 其中T为系统采样周期。 2)系统的零极点形式模型 系统的传递函数还可表示成另一种形式,即零极点形式。这种形式的系统传递 函数比标准形式传递函数更加直观,可清楚地看到系统零极点分布情况。系统的零 极点模型一般可表示为 二2 (3-5) (s-PuXs-p2)(s-Pu) 其中,=(=12,…,m)和P,(=12,…,m)分别为系统的零点和极点,二、P既 可以是实数也可是复数,K为系统增益。 MATLAB可以使用pk函数建立零极点形 式的系统模型.其基本格式为 sys- zpk([z], [p], [k]) 其中,[z]、[p]、[k]分分别为系统的零极点和增益
55 运行结果 Transfer function: 14s+21 15s ^ 8 + 65s ^ 7 + 89s ^ 6 + 83s ^ 5 + 152s ^ 4 + 140s ^ 3 + 32s ^ 2 在这里使用了 conv 函数,它是 MATLAB 中的标准函数,用来求取两个向量的 卷积分。因此当两个多项式相乘,需两个多项式系数向量相乘时,就可利用 conv 函 数来进行。conv 函数允许多重嵌套,由上例已清楚地看到这一点。 对于连续时间系统可以用传递函数对其加以表示,而对于离散时间系统则应采 用脉冲传递函数对其进行描述。脉冲传递函数一般可表示为关于 z 的降幂多项式分 式形式,即 ( ) ( ) ( ) 1 0 1 1 1 0 1 1 a z a z a z a c z c z c z c U z Y z G z n n n n m m m m + + + + + + + + = = − − − − 在 MATLAB 5.0 中,对于离散系统同样可以建立相应的系统模型,其基本格式为 num=[ cm,cm-1,…,c1, c0]; den=[ an,an-1,…,a1, a0]; sys= tf(num,den,T) 其中 T 为系统采样周期。 2) 系统的零极点形式模型 系统的传递函数还可表示成另一种形式,即零极点形式。这种形式的系统传递 函数比标准形式传递函数更加直观,可清楚地看到系统零极点分布情况。系统的零 极点模型一般可表示为 ( ) ( )( ) ( ) ( )( ) ( ) n m s p s p s p s z s z s z G s K − − − − − − = 1 2 1 2 (3-5) 其中, z (i m) i = 1,2, , 和 p ( j n) j = 1,2, , 分别为系统的零点和极点, i z 、 j p 既 可以是实数也可是复数,K 为系统增益。MATLAB 可以使用 zpk 函数建立零极点形 式的系统模型.其基本格式为 sys= zpk([z],[p],[k] ) 其中,[z]、[p]、[k]分分别为系统的零极点和增益
3.系统的状态空间表达式 状态方程是研究系统的最为有效的系统数学描述,不论是单入单出系统还是多 入多出(简称MIMO)系统,若可用一组一阶微分方程对其加以表示,在引进相应的 状态变量后,则可将这一组一阶微分方程写成紧凑形式,即状态空间表达式。通常 个线性定常系统可以表示为 X=AX+BU (3-6 Y=CX+DU 其中上述第一式由n个一阶微分方程构成,称为系统的状态方程表达式,下式由 个线性代数程组构成,称为系统的输出方程。X为n维状态向量:U为m维输入向 量:Y为l维输出向量:A为n×n维的系统状态阵,由系统的参数所决定:B为n m维的系统输入阵C为/×n维输出阵;D为1×m维直接传输阵 应用 MATLAB可以方便地表示系统的状态方程模型,只要按照矩阵输入方式建 立相应的系统系数阵即可,考虑SISO系统,容易在 MATLAB工作空间中建立系统 的系数阵,形式为 A=[ all al2…aln;a2la22…a2n;…; anl an2…am}; B=[b1;b2;…;bnl; C=clc2…cnl D=d 当然,也完全可以在 MATLAB工作空间中建立MIMO系统的系数阵。根据系统状 态方程的系数阵,可在MA∏LAB中建立相应的系统模型,其基本格式为 sys=ss (A, B, C, D) 上述是 MATLAB5x中的格式,在 MATLAB42中其格式为 printsys(A, B, C, D) 对于离散系统,其状态空间表达式可表示成 X(k十1)=AX(k)+BU(k) Y (k)=Cx (k)+ Du(k) 在MA∏LAB5x中同样也可建立相应的系统模型,其格式为 sys-ss 其中,T为系统采样周期。在 MATLAB4.2中也可建立类似的系统模型。 3.1.2系统模型的相互转换 在前一节中已经介绍了描述一个系统的数学模型主要有三种形式;微分方程模 型、传递函数模型(包括零极点形式模型)、状态空间模型等。显然在这些不同形式 的系统数学模型中存在着内在的联系,虽然它们外在形式不同,但它们的实质内容
56 3.系统的状态空间表达式 状态方程是研究系统的最为有效的系统数学描述,不论是单入单出系统还是多 入多出(简称 MIMO)系统,若可用一组一阶微分方程对其加以表示,在引进相应的 状态变量后,则可将这一组一阶微分方程写成紧凑形式,即状态空间表达式。通常 一个线性定常系统可以表示为 Y CX DU X AX BU = + = + (3-6) 其中上述第一式由 n 个一阶微分方程构成,称为系统的状态方程表达式,下式由 l 个线性代数程组构成,称为系统的输出方程。X 为 n 维状态向量;U 为 m 维输入向 量;Y 为 l 维输出向量;A 为 n×n 维的系统状态阵,由系统的参数所决定;B 为 n ×m 维的系统输入阵;C 为 l×n 维输出阵;D 为 l×m 维直接传输阵。 应用 MATLAB 可以方便地表示系统的状态方程模型,只要按照矩阵输入方式建 立相应的系统系数阵即可,考虑 SISO 系统,容易在 MATLAB 工作空间中建立系统 的系数阵,形式为 A=[a11 a12…a1n ;a21 a22…a2n ;…;an1 an2…ann]; B=[b1; b2;…;bn]; C=[c1 c2 …cn]; D=d; 当然,也完全可以在 MATLAB 工作空间中建立 MIMO 系统的系数阵。根据系统状 态方程的系数阵,可在 MATLAB 中建立相应的系统模型,其基本格式为 sys=ss (A,B,C,D) 上述是 MATLAB 5.x 中的格式,在 MATLAB 4.2 中其格式为 printsys(A,B,C,D) 对于离散系统,其状态空间表达式可表示成 X(k 十 1)=AX(k)+BU(k) Y(k)= CX(k)+ DU(k) 在 MATLAB 5.x 中同样也可建立相应的系统模型,其格式为 sys=ss(A, B, C, D, T) 其中,T 为系统采样周期。在 MATLAB 4.2 中也可建立类似的系统模型。 3.1.2 系统模型的相互转换 在前一节中已经介绍了描述一个系统的数学模型主要有三种形式;微分方程模 型、传递函数模型(包括零极点形式模型)、状态空间模型等。显然在这些不同形式 的系统数学模型中存在着内在的联系,虽然它们外在形式不同,但它们的实质内容
是等价的。人们在进行系统分析研究时,往往根据不同的要求选择不同形式的系统 数学模型,因此研究不同形式的数学模型之间的转换具有重要意义。 1.机电系统模型向传递函数或零极点增益形式的转换 1).状态空间方程向传递函数形式的转换 系统的状态空间方程可表示为 X=AX+Bl Y=CX+DU 据此,可以得到等效的系统传递函数模型。 G(s) C(sl-A)"B+D den(s) 显然在进行这种变换过程中,求取(s-A)阵的逆比较困难,然而 MATLAB有 系列的函数可以完成各种变换,其中就包括进行这种变换的s函数,其基本格式 [num, den]=ss2tf(A, B, C, D, iu) 利用该函数即可实现将状态空间方程转换为传递函数的形式,i用于指定变换所使 用的输入量。为了获得传递函数的系统形式,还可以采用下述方式进行,即 Gl=ss(A, B, C, D); G2=tf(G1) 可以证明,由给定的状态方程模型转换为传递函数形式其结果是惟一的 例3-3已知连续系统Σ(A,B,C,D)的系数矩阵是 D=0 求取该系统相应的传递函数模型。 解:应用 MATLAB的stf函数可以方便实现这种转换。 A=[200:041;004 B=[01 [num den]=ss2tf(A, B, C, D, 1) G=tf (num, den)
57 是等价的。人们在进行系统分析研究时,往往根据不同的要求选择不同形式的系统 数学模型,因此研究不同形式的数学模型之间的转换具有重要意义。 1. 机电系统模型向传递函数或零极点增益形式的转换 1).状态空间方程向传递函数形式的转换 系统的状态空间方程可表示为 Y CX DU X AX BU = + = + 据此,可以得到等效的系统传递函数模型。 ( ) ( ) den(s) num s G s = =C(sI-A) -1B+D 显然在进行这种变换过程中,求取(sI-A)阵的逆比较困难,然而 MATLAB 有一 系列的函数可以完成各种变换,其中就包括进行这种变换的 ss2tf 函数,其基本格式 为 [num,den]=ss2tf(A,B,C,D,iu) 利用该函数即可实现将状态空间方程转换为传递函数的形式,iu 用于指定变换所使 用的输入量。为了获得传递函数的系统形式,还可以采用下述方式进行,即 G1=ss(A,B,C,D); G2=tf(G1) 可以证明,由给定的状态方程模型转换为传递函数形式其结果是惟一的。 例 3-3 已知连续系统 Σ(A,B,C,D)的系数矩阵是 A= 0 0 4 0 4 1 2 0 0 ,B= 1 0 1 , C=1 1 0, D= 0 求取该系统相应的传递函数模型。 解: 应用 MATLAB 的 ss2tf 函数可以方便实现这种转换。 A=[2 0 0;0 4 1;0 0 4]; B=[1 0 1]’ : C=[1 1 0]; D=0; [num den]=ss2tf(A,B,C,D,1) G=tf(num,den)
运行上述语句即可实现要求的转换,利用G=tf(num,den)将转换后的传递函数分 子,分母多项式系数向量构造成传递函数系数模型,下面给出了运算结果 Transfer function 2-7s+14 3-10s^2+32s-32 对于多输入系统,应用stf函数可以进行指定要求的模型转换 例3-4已知连续系统软∑(A,B,C,D)的系数矩阵是 2.25-5-125-0.5 2.25-425-125-0.25 0 0.25-0.5-1.25-1 22 1.25-1.75-0.25-0.75 求取系统相应的传递函数模型 解:该系统为一双输入系统,利用sf函数可以进行指定输入的状态方程向传 递函数的转换。stf(A,B,C,D,T)函数中的T,指定了要转换的系统所对应 的输入信号,下面给出了相应于第二输入信号的转换方法 A=[2.25-51.25-0.5;2.25-4.25-1.25-0.25; 0.25-0.5-1.25-1;1.25-1.75-0.250.75 B=[46;24;22;02] C=[0202」 D=001 T=2 [num 2, den2]=ss2tf(A, B, C, D,T G=tf (num2, den2) 运行结果num2= 012.000032.000037.00017.0000 1.00004.00006.25005.25002.2500 Transfer function 12s^3+32s^2+37s+17 s^4+4s^3+6.25s^2+5.25s+2.25
58 运行上述语句即可实现要求的转换,利用 G=tf(num,den)将转换后的传递函数分 子,分母多项式系数向量构造成传递函数系数模型,下面给出了运算结果; num= 0 1.0000 -7.0000 14.0000 den= l -10 32 -32 Transfer function: s ^ 2 – 7 s + 14 s ^ 3 – 10 s ^ 2 + 32 s - 32 对于多输入系统,应用 ss2tf 函数可以进行指定要求的模型转换。 例 3-4 已知连续系统软Σ(A,B,C,D)的系数矩阵是 A= − − − − − − − − − − − − 1 25 1 75 0 25 0 75 0 25 0 5 1 25 1 2 25 4 25 1 25 0 25 2 25 5 1 25 0 5 . . . . . . . . . . . . . . ,B= 0 2 2 2 2 4 4 6 ,C= 0 2 0 2,D= 0 求取系统相应的传递函数模型。 解:该系统为一双输入系统,利用 ss2tf 函数可以进行指定输入的状态方程向传 递函数的转换。ss2tf(A,B,C,D,T)函数中的 T,指定了要转换的系统所对应 的输入信号,下面给出了相应于第二输入信号的转换方法。 A= [2.25 -5 - 1.25 -0.5;2.25 -4.25 -1.25 -0.25; 0.25 -0.5 -1.25 -1; 1.25 -1.75 -0.25 -0.75]; B=[4 6;2 4;2 2;0 2]; C=[0 2 0 2」; D=[0 0]; T=2; [num2,den2]=ss2tf(A,B,C,D,T) G=tf(num2,den2) 运行结果 num2= 0 12.0000 32.0000 37.000 17.0000 den2= 1.0000 4.0000 6.2500 5.2500 2.2500 Transfer function: 12 s ^ 3 + 32 s ^ 2 + 37 s + 17 s ^ 4 + 4 s ^ 3 + 6.25 s ^ 2 + 5.25 s + 2.25
当T=1时,将指定第一输入信号所对应的系统转换,下面给出了相应的转换结 果 4.000014000022.0000 150000 1.0000 4.00006.2500 5.2500 Transfer function 4s^3+14s^2+22s+15 s^4+4s^3+6.25s^2+525s+2.25 2).模型向零极点形式的转换 系统的零极点模型实际上是传递函数模型的另一种形式,也是对系统进行分析 的一类常用模型,因此在MA∏LAB中,也提供了实现将各类系统模型转换为零极点 形式模型的函数。其基本格式为 [z, p, k] =ss2zp(A, B, D,IU) [z, p, k]=tf2zp(num, den) 上述第一式是将以状态方程形式给出的模型根据指定研究的输入,转换为零极点模 型形式:第二式是将传递函数形式给出的模型转换为零极点形式;第三式十分简洁 用该函数可将非零极点形式的模型转换为零极点系统模型 例3-5已知系统状态方程的系数阵为 C=15 D=0 10 试将其转换成零极点模型形式 解:利用转换函数 [z, P,k=ss2zp(A, B, C, D) 即可实现所希望的转换,运行结果为 1.3333
59 当 T=1 时,将指定第一输入信号所对应的系统转换,下面给出了相应的转换结 果。 num1= 0 4.0000 14.0000 22.0000 15.0000 denl= 1.0000 4.0000 6.2500 5.2500 2.2500 Transfer function: 4 s ^ 3 + 14 s ^ 2 + 22 s + 15 s ^ 4 + 4 s ^ 3 + 6.25 s ^ 2 + 5.25 s + 2.25 2).模型向零极点形式的转换 系统的零极点模型实际上是传递函数模型的另一种形式,也是对系统进行分析 的一类常用模型,因此在 MATLAB 中,也提供了实现将各类系统模型转换为零极点 形式模型的函数。其基本格式为 [z,p,k]=ss2zp(A, B,D,IU) [z,p,k]=tf2zp(num,den) Gzp=zpk(sys) 上述第一式是将以状态方程形式给出的模型根据指定研究的输入,转换为零极点模 型形式;第二式是将传递函数形式给出的模型转换为零极点形式;第三式十分简洁, 用该函数可将非零极点形式的模型转换为零极点系统模型。 例 3-5 已知系统状态方程的系数阵为 A= − − 1 0 3 2 ,B= 0 1 ,C= 1.5 2,D= 0 试将其转换成零极点模型形式。 解:利用转换函数 [z ,P,k]=ss2zp(A,B,C,D) 即可实现所希望的转换,运行结果为 z= -1.3333 p= -2 -1 k=
1.5000 也可利用G4p=4pk(sys)函数进行转换,即 sy (A, B, C, D) 运行结果 Continuous-time system Zero/pole/gain 2(s+0.5) (s+2)(s+1) 显然,两种方法所得到的结果是相关的 2.系统模型向状态方程形式的转换 前面介绍了系统模型转换为传递函数的方法,同样也可以利用 MATLAB函数实 现所需要的系统模型向状态方程的转换。其基本格式为 [A, B, C, D]=tf2ss(num, den) D]=zp2ss(Z,p, k) 例3-6已知系统传递函数为 18s+36 s3+404s2+391s+150 应用MA∏LAB的模型转换函数将其转换为状态方程形式的模型。 解:应用t2s转换函数很容易实现所要求的转换。但应注意,由于其状态变量 选取的不同,转换结果是不惟一的。下面给出了应用t2s函数的转换程序与结果 num=[18,36; den=[1404391150]: LA, B, C, D]=tf2ss(num, den) 运行结果为 A -40.4000-391.0000-150.0000 1.0000 0
60 1.5000 也可利用 Gzp=zpk(sys)函数进行转换,即 sys=ss(A, B, C, D) Gzp=zpk(sys) 运行结果 Continuous-time system. Zero/pole/gain; 2(s+0.5) (s 十 2) (s+1) 显然,两种方法所得到的结果是相关的。 2. 系统模型向状态方程形式的转换 前面介绍了系统模型转换为传递函数的方法,同样也可以利用 MATLAB 函数实 现所需要的系统模型向状态方程的转换。其基本格式为 [A,B,C,D]=tf2ss(num,den) [A,B,C,D]=zp2ss(Z,p,k) syss=ss(sys) 例 3-6 已知系统传递函数为 ( ) 40 4 391 150 18 36 3 2 + + + + = s s s s G s . 应用 MATLAB 的模型转换函数将其转换为状态方程形式的模型。 解: 应用 tf2ss 转换函数很容易实现所要求的转换。但应注意,由于其状态变量 选取的不同,转换结果是不惟一的。下面给出了应用 tf2ss 函数的转换程序与结果。 num=[18,36]; den=[1 40.4 391 150]; [A,B,C,D]=tf2ss(num,den) 运行结果为 A= -40.4000 -391.0000 -150.0000 1.0000 0 0 0 1.0000 0 B= 1 0 0
利用[A,B,C,D]=p2 ss(z, p, k)可以将零极点形式给出的模型转换为状态方程 对于sys=ss(sys),可以将任意L∏系统模型转换为状态方程 例3-7考虑例3-6,将程序进行修改。 解:修改程序如下 num=[18,36]: den=[1404391150] G=tf (num, den) Sys=ss(g) 运行结果 -40.4000-391.0000-150.0000 1.00000 01.0000 01836 D 3.1.3系统状态方程的变换与实现 1.状态方程的相似变换 在前一节已经述及将系统的状态方程转换为传递函数时,其结果是惟一的:然 而由于状态变量的选取不同,将系统的传递函数转换为状态方程则不能保证结果的 惟一。换言之,对于一个系统的传递函数,可以存在着众多的状态方程实现。这样 对于同一个系统有着不同的状态方程的描述,因此也就存在着它们之间的相互变换, MATLAB中的sss函数可以实现对系统状态方程的相似变换。其基本格式为 GT=sS2ss (G, T) 其中,G为原系统的状态方程模型,T为非奇异变换阵
61 C= 0 18 36 D= 0 利用[A,B,C,D]=zp2ss(z,p,k)可以将零极点形式给出的模型转换为状态方程。 对于 sys=ss(sys),可以将任意 LTI 系统模型转换为状态方程。 例 3-7 考虑例 3-6,将程序进行修改。 解: 修改程序如下。 num=[18,36]; den=[1 40.4 391 150]; G=tf(num, den) Sys= ss(G) 运行结果 A= -40.4000 -391.0000 -150.0000 1.00000 0 0 0 1.0000 0 B= 1 0 0 C= 0 18 36 D= 0 3.1.3 系统状态方程的变换与实现 1.状态方程的相似变换 在前一节已经述及将系统的状态方程转换为传递函数时,其结果是惟一的;然 而由于状态变量的选取不同,将系统的传递函数转换为状态方程则不能保证结果的 惟一。换言之,对于一个系统的传递函数,可以存在着众多的状态方程实现。这样, 对于同一个系统有着不同的状态方程的描述,因此也就存在着它们之间的相互变换, MATLAB 中的 ss2ss 函数可以实现对系统状态方程的相似变换。其基本格式为 GT=ss2ss(G,T) 其中,G 为原系统的状态方程模型,T 为非奇异变换阵