MATLAB 实用教程:第6章 线性控制系统分析与设计



《MATLAB 实用教程:第6章 线性控制系统分析与设计》由会员分享,可在线阅读,更多相关《MATLAB 实用教程:第6章 线性控制系统分析与设计(37页珍藏版)》请在装配图网上搜索。
1、第6章 线性控制系统分析与设计 MATLAB的控制系统工具箱(Control System Toolbox)可以提供对线性系统分析、设计和建模的各种算法。 6.1线性系统的描述 6.1.1状态空间描述法 状态空间描述法是使用状态方程模型来描述控制系统,MATLAB中状态方程模型的建立使用ss和dss命令。 语法: G=ss(a,b,c,d) %由a、b、c、d参数获得状态方程模型 G=dss(a,b,c,d,e) %由a、b、c、d、e参数获得状态方程模型 【例6.1】写出二阶系统,当=0.707,=1时的状态方程。 zeta=0.707;wn=1;
2、 A=[0 1;-wn^2 -2*zeta*wn]; B=[0;wn^2]; C=[1 0]; D=0; G=ss(A,B,C,D) %建立状态方程模型 a = x1 x2 x1 0 1 x2 -1 -1.414 b = u1 x1 0 x2 1 c = x1 x2 y1 1 0 d = u1 y1 0 Conti
3、nuous-time model. 6.1.2传递函数描述法 MATLAB中使用tf命令来建立传递函数。 语法: G=tf(num,den) %由传递函数分子分母得出 说明:num为分子向量,num=[b1,b2,…,bm,bm+1];den为分母向量,den=[a1,a2,…,an-1,an]。 【例6.1续】将二阶系统描述为传递函数的形式。 num=1; den=[1 1.414 1]; G=tf(num,den) %得出传递函数 Transfer function: 1 -----------------
4、s^2 + 1.414 s + 1 6.1.3零极点描述法 MATLAB中使用zpk命令可以来实现由零极点得到传递函数模型。 语法: G=zpk(z,p,k) %由零点、极点和增益获得 说明:z为零点列向量;p为极点列向量;k为增益。 【例6.1续】得出二阶系统的零极点,并得出传递函数。 z=roots(num) z = Empty matrix: 0-by-1 p=roots(den) p = -0.7070 + 0.7072i -0.7070 - 0.7072i zpk(z,p,1)
5、 Zero/pole/gain: 1 ------------------- (s^2 + 1.414s + 1) 程序分析:roots函数可以得出多项式的根,零极点形式是以实数形式表示的。 部分分式法是将传递函数表示成部分分式或留数形式: 【例6.1续】将传递函数转换成部分分式法,得出各系数。 [r,p,k]=residue(num,den) r = 0 - 0.7070i 0 + 0.7070i p = -0.7070 + 0.7072i -0.7070 - 0.7072i k
6、= [] 6.1.4离散系统的数学描述 1. 状态空间描述法 状态空间描述离散系统也可使用ss和dss命令。 语法: G=ss(a,b,c,d,Ts) %由a、b、c、d参数获得状态方程模型 G=dss(a,b,c,d,e,Ts) %由a、b、c、d、e参数获得状态方程模型 说明:Ts为采样周期,为标量,当采样周期未指明可以用-1表示。 【例6.2】用状态空间法建立离散系统。 a=[-1.5 -0.5;1 0]; b=[1;0]; c=[0 0.5]; d=0; G=ss(a,b,c,d,0.1) %采样周期为0
7、.1s a = x1 x2 x1 -1.5 -0.5 x2 1 0 b = u1 x1 1 x2 0 c = x1 x2 y1 0 0.5 d = u1 y1 0 Sampling time: 0.1 Discrete-time model. 2. 脉冲传递函数描述法 脉冲传递函数也可以用tf命令实现。 语法: G=tf(num,de
8、n,Ts) %由分子分母得出脉冲传递函数 说明:Ts为采样周期,为标量,当采样周期未指明可以用-1表示,自变量用'z'表示。 【例6.2续】创建离散系统脉冲传递函数。 num1=[0.5 0]; den=[1 -1.5 0.5]; G1=tf(num1,den,-1) Transfer function: 0.5 z ----------------- z^2 - 1.5 z + 0.5 Sampling time: unspecified MATLAB中还可以用filt命令产生脉冲传递函数。 语法: G=filt(
9、num,den,Ts) %由分子分母得出脉冲传递函数 说明:Ts为采样周期,当采样周期未指明Ts可以省略,也可以用-1表示,自变量用'z-1'表示。 【例6.2续】使用filt命令产生脉冲传递函数。 num2=[0 0.5]; G2=filt(num2,den) Transfer function: 0.5 z^-1 ----------------------- 1 - 1.5 z^-1 + 0.5 z^-2 Sampling time: unspecified 程序说明:用filt命令生成的脉冲传递函数的自变量不是z而是z
10、-1,因此分子应改为“[0 0.5]”。 3. 零极点增益描述法 离散系统的零极点增益用zpk命令实现。 语法: G=zpk(z,p,k,Ts) %由零极点得出脉冲传递函数 【例6.2续】使用zpk命令产生零极点增益传递函数。 G3=zpk([0],[0.5 1],0.5,-1) Zero/pole/gain: 0.5 z ------------- (z-0.5) (z-1) Sampling time: unspecified 6.2线性系统模型之间的转换 6.2.1连续系统模型之间的转换 在MATLAB5.3版
11、及以前的控制系统工具箱中有各种不同模型转换的函数,如下表6.1所示为线性系统模型转换的函数。 表6.1 线性系统模型转换函数表 函数 调用格式 功能 tf2ss [a,b,c,d]=tf2ss(num,den) 传递函数转换为状态空间 tf2zp [z,p,k]=tf2zp(num,den) 传递函数转换为零极点描述 ss2tf [num,den]=ss2tf(a,b,c,d,iu) 状态空间转换为传递函数 ss2zp [z,p,k]=ss2zp(a,b,c,d,iu) 状态空间转换为零极点描述 zp2ss [a,b,c,d]=zp2ss(z,p,k)
12、零极点描述转换为状态空间 zp2tf [num,den]=zp2tf(z,p,k) 零极点描述转换为传递函数 1. 系统模型的转换 (1) 状态空间模型的获得 由命令ss和dss实现将传递函数和零极点增益转换为状态空间模型。 语法: G=ss(传递函数) %由传递函数转换获得 G=ss(零极点模型) %由零极点模型转换获得 【例6.3】将单输入双输出的系统传递函数转换为状态空间描述。 num=[0 3 2; 1 2 3]; den=[3 5 2 1]; G11=tf(num(1,:),den) Transfer fun
13、ction: 3 s + 2 ----------------------- 3 s^3 + 5 s^2 + 2 s + 1 G12=tf(num(2,:),den) Transfer function: s^2 + 2 s + 3 ----------------------- 3 s^3 + 5 s^2 + 2 s + 1 G=ss([G11;G12]) a = x1 x2 x3 x1 -1.667 -0.3333
14、 -0.08333 x2 2 0 0 x3 0 2 0 b = u1 x1 1 x2 0 x3 0 c = x1 x2 x3 y1 0 0.5 0.1667 y2 0.3333 0.3333 0.25 d = u1 y1 0 y2 0 Contin
15、uous-time model. (2) 传递函数的获得 由tf命令实现将系统的状态空间法和零极点增益模型转换为传递函数。 语法: G=tf(状态方程模型) %由状态空间转换 G=tf(零极点模型) %由零极点模型转换 【例6.3续】由状态空间描述转换为传递函数。 G1=tf(G) Transfer function from input to output... s + 0.6667 #1: ----------------------------------- s^3 + 1.
16、667 s^2 + 0.6667 s + 0.3333 0.3333 s^2 + 0.6667 s + 1 #2: ----------------------------------- s^3 + 1.667 s^2 + 0.6667 s + 0.3333 (3) 零极点模型的获得 由zpk命令实现将状态空间法、传递函数转换为零极点模型。 语法: G=zpk(状态方程模型) %由状态方程模型转换 G=zpk(传递函数) %由传递函数转换 【例6.3续】由传递函数和状态方程模型转换零极点模型。 G
17、2=zpk(G) %由状态方程模型转换 Zero/pole/gain from input to output... (s+0.6667) #1: ----------------------------------- (s+1.356) (s^2 + 0.3103s + 0.2458) 0.33333 (s^2 + 2s + 3) #2: ----------------------------------- (s+1.356) (s^2 + 0.31
18、03s + 0.2458) G2=zpk(G1); %由传递函数转换 2. 模型参数的获取 语法: [a,b,c,d]=ssdata(G) %获取状态空间参数 [a,b,c,d,e]=dssdata(G) %获取状态空间参数 [num,den]=tfdata(G) %获取传递函数参数 [z,p,k]=zpkdata(G) %获取零极点参数 【例6.3续】获取各模型的参数。 [a,b,c,d]=ssdata(G1) %获取状态方程参数 a = -1.6667 -0.
19、3333 -0.0833 2.0000 0 0 0 2.0000 0 b = 1 0 0 c = 0 0.5000 0.1667 0.3333 0.3333 0.2500 d = 0 0 [num,den]=tfdata(G2) %获取传递函数参数 num = [1x4 double] [1x4 double] den = [1
20、x4 double] [1x4 double] [z,p,k]=zpkdata(G) %获取零极点参数 z = [ -0.6667] [2x1 double] p = [3x1 double] [3x1 double] k = 1.0000 0.3333 3. 模型类型的检验 【例6.3续】检验模型的类型。 class(G) %得出系统模型类型 ans = ss isa(G,'tf') %检验系统模型类型 ans =
21、0 6.2.2连续系统与离散系统之间的转换 表6.2 模型类型检验函数表 函数 调用格式 功能 class class(G) 得出系统模型的类型 isa isa(G, '类型名') 判断G是否对应的类型名,是则为1(True) isct isct(G) 判断G是否连续系统,是则为1(True) isdt isdt(G) 判断G是否离散系统,是则为1(True) issiso issiso(G) 判断G是否SISO系统,是则为1(True) 1. c2d命令 c2d命令用于将连续系统转换为离散系统。 语法: Gd=c2d(G,Ts,m
22、ethod) %以采样周期Ts和method方法转换为离散系统 说明:G为连续系统模型;Gd为离散系统模型;Ts为采样周期;method为转换方法,可省略,包括五种:zoh(默认零阶保持器)、foh(一阶保持器)、tustin(双线性变换法)、prewarp(频率预修正双线性变换法)、mached(根匹配法)。 【例6.4】将二阶连续系统转换为离散系统。 a=[0 1;-1 -1.414]; b=[0;1]; c=[1 0]; d=0; G=ss(a,b,c,d); Gd=c2d(G,0.1) a = x1
23、 x2 x1 0.9952 0.0931 x2 -0.0931 0.8636 b = u1 x1 0.004768 x2 0.0931 c = x1 x2 y1 1 0 d = u1 y1 0 Sampling time: 0.1 Discrete-time model. 2. d2c命令 d2c命令是c2d的逆运算,用于将离散系统转换为连续系统。 语法: G=d2c(Gd
24、,method) %转换为连续系统 说明:method为转换方法可省略,与c2d相似,少了foh(一阶保持器)方法。 【例6.4续】将二阶离散系统转换为连续系统。 G=d2c(Gd) a = x1 x2 x1 5.551e-016 1 x2 -1 -1.414 b = u1 x1 -2.776e-016 x2 1 c = x1
25、 x2 y1 1 0 d = u1 y1 0 Continuous-time model. 3. d2d命令 d2d命令是将离散系统改变采样频率。 语法: Gd2=d2d(Gd1,Ts2) %转换离散系统的采样频率为Ts2 说明:其实际的转换过程是先把Gd1按零阶保持器转换为原连续系统,然后再用Ts2和零阶保持器转换为Gd2。 【例6.4续】将二阶离散系统改变采样频率。 Gd2=d2d(Gd,0.3) a = x1 x2 x1
26、 0.961 0.2408 x2 -0.2408 0.6205 b = u1 x1 0.03897 x2 0.2408 c = x1 x2 y1 1 0 d = u1 y1 0 Sampling time: 0.3 Discrete-time model. 6.2.3模型对象的属性 1. 模型对象的属性 ss、tf和zpk三种对象除了具有线性时不变系统共有的属性以外,还具有其各自的属性,共有属性如表
27、6.3所示,其各自的属性如表6.4所示。 表6.3 对象共有属性表 属性名 属性值的数据类型 意义 Ts 标量 采样周期,为0表示连续系统,为-1表示采样周期未定 Td 数组 输入延时,仅对连续系统有效,省略表示无延时 InputName 字符串数组 输入变量名 OutputName 字符串数组 输出变量名 Notes 字符串 描述模型的文本说明 Userdata 任意数据类型 用户需要的其它数据 表6.4三种子对象特有属性表 对象名 属性名 属性值的数据类型 意义 tf den 行数组组成的单元阵列 传递函数分母系数 num
28、 行数组组成的单元阵列 传递函数分子系数 variable s,p,z,q,z-1之一 传递函数变量 ss a 矩阵 系数 b 矩阵 系数 c 矩阵 系数 d 矩阵 系数 e 矩阵 系数 StateName 字符串向量 用于定义每个状态变量的名称 zpk z 矩阵 零点 p 矩阵 极点 k 矩阵 增益 variable s,p,z,q,z-1之一 零极点增益模型变量 在表6.3和表6.4中的三种子对象的属性,在前面都已使用过,MATLAB提供了get和set命令来对属性进行获取和修改。 2. get命令和set命令
29、 (1) get命令可以获取模型对象的所有属性 语法: get(G) %获取对象的所有属性值 get(G,’PropertyName’,…) %获取对象的某些属性值 说明:G为模型对象名;’PropertyName’为属性名。 (2) set命令用于修改对象属性名 语法: set(G,’PropertyName’,PropertyValue,…) %修改对象的某些属性值 【例6.5】已知二阶系统的传递函数,获取其传递函数模型的属性,并将传递函数修改为。 num=1; den=[1 1.414 1]; G=tf(nu
30、m,den); get(G) %获取所有属性 num: {[0 0 1]} den: {[1 1.41 1]} Variable: 's' Ts: 0 ioDelay: 0 InputDelay: 0 OutputDelay: 0 InputName: {''} OutputName: {''}
31、 InputGroup: {0x2 cell} OutputGroup: {0x2 cell} Notes: {} UserData: [] set(G,'den',[1 2 1],'Variable','z') %设置属性 G Transfer function: 1 ------------- z^2 + 2 z + 1 Sampling time: unspecified 3. 直接获取和修改属性 【
32、例6.5续】将上面的传递函数模型对象的分母修改为原来的值。 G.den=[1 1.414 1]; G Transfer function: 1 ----------------- z^2 + 1.414 z + 1 Sampling time: unspecified 6.3结构框图的模型表示 1. 串联结构 u(t) G1(s) G2(s) y(t) 图6.1 串联结构 SISO的串联结构是两个模块串联在一起,如图6.1所示。 实现串联结构传递函数的命令: G=G1*G2 G=series(G1,G2)
33、 y(t) u(t) G1(s) G2(s) 图6.2 并联结构 2. 并联结构 SISO的并联结构是两个模块并联在一起,如图6.2所示。 实现并联结构传递函数的命令: G=G1+G2 G=parallel(G1,G2) 3. 反馈结构 反馈结构是前向通道和反馈通道模块构成正反馈和负反馈,如图6.3所示。 ± y(t) u(t) G1(s) G2(s) 图6.3 反馈结构 实现反馈结构传递函数的命令: G=feedback(G1,G2,Sign) 说明:Sign用来表示正反馈或负反馈,Sign=-1或省略则表示为负反馈。 【例6
34、.6】根据系统的结构框图求出整个系统的传递函数,结构框图如图6.4所示,其中,,,。 图6.4结构框图 - G1(s) G2 (s) G3 (s) - G4 (s) G1=tf(1,[1 2 1]) Transfer function: 1 ------------- s^2 + 2 s + 1 G2=tf(1,[1 1]); G3=tf(1,[2 1]); G4=tf(1,[1 0]); G12=G1+G2 %并联结构 Transfer function: s^2 + 3 s + 2
35、 --------------------- s^3 + 3 s^2 + 3 s + 1 G34=G3-G4 %并联结构 Transfer function: -s - 1 --------- 2 s^2 + s G=feedback(G12,G34,-1) %反馈结构 Transfer function: 2 s^4 + 7 s^3 + 7 s^2 + 2 s ------------------------------------- 2 s^5 + 7 s^4 + 8 s^3 + s^2 - 4
36、 s - 2 例如,上图的两个并联结构G1和G2,如果G1用状态空间描述,则并联运算的结果也是用状态空间法描述: G1=ss(tf(1,[1 2 1])); %状态空间描述 G2=tf(1,[1 1]); G1+G2 a = x1 x2 x3 x1 -2 -0.25 0 x2 4 0 0 x3 0 0 -1 b = u1 x1 0.5 x2 0
37、 x3 1 c = x1 x2 x3 y1 0 0.5 1 d = u1 y1 0 Continuous-time model. 4. 复杂的结构框图 求取复杂结构框图的数学模型的步骤: (1) 将各模块的通路排序编号; (2) 建立无连接的数学模型:使用append命令实现各模块未连接的系统矩阵。 G=append(G1,G2,G3,…) (3) 指定连接关系:写出各通路的输入输出关系矩阵Q,第一列是模块通路编号,从第二列开始的几列分别为进入该模块的
38、所有通路编号;INPUTS变量存储输入信号所加入的通路编号;OUTPUTS变量存储输出信号所在通路编号。 (4) 使用connect命令构造整个系统的模型。 Sys=connect(G,Q,INPUTS,OUTPUTS) 如果各模块都使用传递函数,也可以用blkbuild命令建立无连接的数学模型,则第二步修改如下: 将各通路的信息存放在变量中:通路数放在nblocks,各通路传递函数的分子和分母分别放在不同的变量中;用blkbuild命令求取系统的状态方程模型。 【例6.7】根据图6.5所示系统结构框图,求出系统总的传递函数。 y(t) u(t) 图6.5结构框图 - -
39、 1/s 1/(s2+s) 1/(s2+s) -2 1/s 1/(s+1) 方法一:使用append命令 (1) 将各模块的通路排序编号,如图6.6所示。 7 6 5 4 3 2 1 图6.6 信号流图 -1 1/s 1/(s2+s) 1/(s2+s) -2 1/s -1/(s+1) (2) 使用append命令实现各模块未连接的系统矩阵 G1=tf(1,[1 0]); G2=tf(1,[1 1 0]); G3=tf(1,[1 1 0]); G4=tf(-2,1); G5=tf(-1,1); G6=tf(1,[1 0]);
40、 G7=tf(-1,[1 1]); Sys=append(G1,G2,G3,G4,G5,G6,G7) Transfer function from input 1 to output... 1 #1: - s #2: 0 #3: 0 #4: 0 #5: 0 #6: 0 #7: 0 Transfer function from input 2 to output... #1: 0 1 #2: ------- s
41、^2 + s #3: 0 #4: 0 #5: 0 #6: 0 #7: 0 Transfer function from input 3 to output... #1: 0 #2: 0 1 #3: ------- s^2 + s #4: 0 #5: 0 #6: 0 #7: 0 Transfer function from input 4 to output... #1: 0 #2: 0
42、 #3: 0 #4: -2 #5: 0 #6: 0 #7: 0 Transfer function from input 5 to output... #1: 0 #2: 0 #3: 0 #4: 0 #5: -1 #6: 0 #7: 0 Transfer function from input 6 to output... #1: 0 #2: 0 #3: 0 #4: 0 #5: 0
43、 1 #6: - s #7: 0 Transfer function from input 7 to output... #1: 0 #2: 0 #3: 0 #4: 0 #5: 0 #6: 0 -1 #7: ----- s + 1 程序分析:将每个模块用append命令放在一个系统矩阵中,可以看到Sys模块存放了七个模块的传递函数,为了节省篇幅在此未列出完整的Sys模块。 (3) 指定连接关系 Q=[1 6 5; %
44、通路1的输入信号为通路6和通路5 2 1 7; %通路2的输入信号为通路1和通路7 3 2 0; %通路3的输入信号为通路2 4 3 0; 5 4 0; 6 2 0; 7 3 0;] INPUTS=1; %系统总输入由通路1输入 OUTPUTS=4; %系统总输出由通路4输出 Q = 1 6 5 2 1 7 3 2 0 4 3 0 5 4 0 6 2 0
45、 7 3 0 程序分析:Q矩阵建立了各通路之间的关系,共有7行;每行的第一列为通路号,从第二列开始为各通路输入信号的通路号;INPUTS变量存放系统输入信号的通路号;OUTPUTS变量存放系统输出信号的通路号。 (4) 使用connect命令构造整个系统的模型 G =connect(Sys,Q,INPUTS,OUTPUTS) Transfer function: -2 s^2 - 2 s -----------------------------------------------------
46、----- s^7 + 3 s^6 + 3 s^5 + s^4 - s^3 - 3 s^2 - 3 s - 6.661e-016 程序分析:用connect命令完成整个系统的传递函数模型。 方法二:从第二步开始使用blkbuild命令来实现 (2) 将各通路的信息存放在变量中 nblocks=7; %通路数为7 n1=1; d1=[1 0]; %通路1的分子和分母 n2=1; d2=[1 1 0]; n3=1; d3=[1 1 0]; n4=-2; d4=1; n5=-1; d5=1; n6=1; d6=[1 0]; n7=
47、-1;d7=[1 1]; 程序分析:通路数nblocks为7;各通路传递函数的分子存放在变量ni,分母存放在变量di。 用blkbuild命令求取系统的状态方程模型: blkbuild State model [a,b,c,d] of the block diagram has 7 inputs and 7 outputs. 程序分析:增广状态方程模型即7条通路的输入输出信号状态模型建立了,存放在a、b、c、d变量中。 (3) 建立连接矩阵Q指定连接关系,Q矩阵同前面 (4) 使用connect命令构造整个系统的模型 [A,B,C,D]=connect(a,
48、b,c,d,Q,INPUTS,OUTPUTS) A = 0 0 0 0 2 1 0 1 -1 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
49、 0 0 0 0 1 0 -1 B = 1 0 0 0 0 0 0 C = 0 0 0 0 -2 0 0 D = 0 6.4线性系统的时域分析 6.4.1零输入响应分析 MATLAB中使用initial命令来计算和显示连续系统的零输入响应。 语法: initial(G,x0, Ts) %绘制系统的零输入响应曲线 initial(G1,G2,…,x0,
50、Ts) %绘制系统多个系统的零输入响应曲线 [y,t,x]=initial(G,x0, Ts) %得出零输入响应、时间和状态变量响应 说明:G为系统模型,必须是状态空间模型;x0是初始条件;Ts为时间点,如果是标量则为终止时间,如果是数组,则为计算的时刻,可省略;y为输出响应;t为时间向量,可省略;x为状态变量响应,可省略。 图6.7 零输入响应曲线 【例6.8】某反馈系统,前向通道的传递函数为,反馈通道传递函数为,求出其初始条件为[1 2]时的零输入响应,如图6.7所示。 G1=tf(12,[1 4]); H=tf(1,[1 3]); GG=feedback
51、(G1,H) Transfer function: 12 s + 36 -------------- s^2 + 7 s + 24 G=ss(GG); initial(G,[1 2]) %绘制零输入响应 2. 离散系统的脉冲响应 离散系统的零输入响应使用dinitial命令实现。 语法: dinitial(a,b,c,d,x0) %绘制离散系统零输入响应 y= dinitial (a,b,c,d,x0) %得出离散系统的零输入响应 [y,x,n]= dinitial (a,b,c,d,x0)
52、 %得出离散系统n点的零输入响应 说明:a、b、c、d为状态空间的系数矩阵;x0为初始条件;y为输出响应;t为时间向量;x为状态变量响应;n为点数。 6.4.2脉冲响应分析 1. 连续系统的脉冲响应 连续系统的脉冲响应由impluse命令来得出。 语法: impulse(G, Ts) %绘制系统的脉冲响应曲线 [y,t,x]=impulse(G, Ts) %得出脉冲响应 说明:G为系统模型,可以是传递函数、状态方程、零极点增益的形式;y为时间响应;t为时间向量;x为状态变量响应,t和x可省略;Ts为时间点可省略。 【例6.8续】求出初始条件为零,该
53、系统的单位脉冲响应并画曲线,如图6.8所示。 impulse(G) %绘制脉冲响应曲线 t=0:0.1:10; y=impulse(G,t) %根据时间t得出脉冲响应 图6.8 脉冲响应曲线 2. 离散系统的脉冲响应 离散系统的脉冲响应使用dimpulse命令实现。 语法: dimpluse(a,b,c,d,iu) %绘制离散系统脉冲响应曲线 [y,x]=dimpluse(a,b,c,d,iu,n) %得出n点离散系统的脉冲响应 [y,x]=dimpluse(num,den,iu,n) %由传递函数得出
54、n点离散系统的脉冲响应 说明:iu为第几个输入信号;n为要计算脉冲响应的点数;y的列数与n对应;x为状态变量,可省略。 【例6.9】根据系统数学模型,得出离散系统的脉冲响应,如图6.9所示。 图6.9 离散系统脉冲响应曲线 a=[-2 0;0 -3]; b=[1;1]; c=[1 -4]; d=1; dimpulse(a,b,c,d,1,10) %绘制离散系统脉冲响应的10个点 6.4.3阶跃响应分析 1. 连续阶跃响应 阶跃响应可以用step命令来实现。 语法: step(G, Ts) %绘制系统的阶跃响应曲线 [y,t,x]
55、=step(G, Ts) %得出阶跃响应 图6.10 阶跃响应曲线 说明:参数设置与impulse命令相同。 【例6.10】根据【例6.6】的系统模型得出阶跃响应曲线,如图6.10所示。 G1=tf(12,[1 4]); H=tf(1,[1 3]); G=feedback(G1,H) Transfer function: 12 s + 36 -------------- s^2 + 7 s + 24 step(G) %绘制阶跃响应曲线 可以由step命令根据时间t的步长不同,得出不同的阶跃响应波形,如图6.11所示。
56、 t1=0:0.1:5; y1=step(G,t1); plot(t1,y1) t2=0:0.5:5; y2=step(G,t2); plot(t2,y2) 图6.11 (a) 阶跃响应曲线 (b) 步长增大的阶跃响应曲线 2. 离散系统的阶跃响应 离散系统阶跃响应使用dstep命令来实现,语法规则与dimpluse相同。 6.4.4任意输入的响应 1. 连续系统的任意输入响应 连续系统对任意输入的响应用lsim命令来实现。 语法: lsim(G,U,Ts) %绘制系统的任意响应曲线
57、 lsim(G1,G2,…U,Ts) %绘制多个系统任意响应曲线 [y,t,x]=lsim(G,U,Ts) %得出任意响应 说明:U为输入序列,每一列对应一个输入;Ts为时间点,U的行数和Ts相对应;参数t和x可省略。 图6.12 正弦输入信号响应 【例6.11】根据输入信号和系统的数学模型,得出任意输入的输出响应,输入信号为正弦信号,系统为阻尼系数变化的二阶系统,输出响应如图6.12所示。 t=0:0.1:5; u=sin(t); G1=tf(1,[1 1.41 1]) Transfer function: 1 -
58、--------------- s^2 + 1.41 s + 1 G2=tf(1,[1 0.6 1]) Transfer function: 1 --------------- s^2 + 0.6 s + 1 lsim(G1,'r',G2,'bo',u,t) %绘制两个系统的正弦输出响应 2. 离散系统的任意输入响应 离散系统的任意输入响应用dlsim命令来实现。 语法: dlsim(a,b,c,d,U) %绘制离散系统的任意响应曲线 [y,x]=dlsim(num,den,U)
59、 %得出离散系统任意响应和状态变量响应 [y,x]=dlsim(a,b,c,d,U) %得出离散系统响应和状态变量响应 说明:U为任意序列输入信号。 【例6.12】根据离散系统的Z变换表达式,得出正弦序列输入响应,输出响应如图6.13所示。 num=[2 5 1]; den=[1 2 3]; t=0:0.1:5; u=sin(t); 图6.13 正弦输入信号响应 y=dlsim(num,den,u); 6.4.5系统的结构参数 1. 极点和零点 (1) pole命令计算极点 语法: p=pole(G) 说明:当系统有重极点时,计算结果
60、不一定准确。 (2) tzero命令计算零点和增益 语法: z=tzero(G) %得出连续和离散系统的零点 [z,gain]=tzero(G) %获得零点和零极点增益 说明:对于单输入单输出系统, tzero命令也用来计算零极点增益。 【例6.13】获得系统的零极点。 num=[5 100]; den=[1 8 32 80 100]; G=tf(num,den); p=pole(G) p = -1.0000 + 3.0000i -1.0000 - 3.0000i -3.0000 + 1.0000i -3.0
61、000 - 1.0000i [z,gain]=tzero(G) %得出零点和零极点增益 z = -20 gain = 5 2. 闭环系统的阻尼系数和固有频率 damp命令用来计算闭环系统所有共轭极点的阻尼系数ζ和固有频率ωn。 语法: [wn,zeta]=damp(G) 3. 时域响应的稳态增益 稳态增益可使用dcgain命令来得出。 语法: k=dcgain(G) %获得稳态增益 【例6.13续】计算所有闭环极点的ζ和ωn。 [wn,zeta]=damp(G) wn = 3.1
62、623 3.1623 3.1623 3.1623 zeta = 0.9487 0.9487 0.3162 0.3162 dcgain(G) %得出线性系统的稳态增益 ans = 1 6.5线性系统的频域分析 6.5.1频域特性 频域特性由下式求出: Gw=polyval(num,j*w)./polyval(den,j*w) mag=abs(Gw) %幅频特性 pha=angle(Gw) %相频特性 说明:j为虚部变量。
63、【例6.14】由二阶系统传递函数,得出频域特性。 num=1; den=[1 1.414 1]; w=1 ; Gw=polyval(num,j*w)./polyval(den,j*w) %得出系统频率特性 Gw = 0 - 0.7072i Aw=abs(Gw) %得出幅频特性 Aw = 0.7072 Fw=angle(Gw) %得出相频特性 Fw = -1.5708 6.5.2连续系统频域特性 1. bode图 bode图是对数幅频和对数相频特
64、性曲线。 语法: bode(G,w) %绘制bode图 [mag,pha]=bode(G,w) %得出w对应的幅值和相角 [mag,pha,w]=bode(G) %得出幅值、相角和频率 说明:G为系统模型,w为频率向量,mag为系统的幅值,pha为系统的相角。 【例6.15】根据系统传递函数,绘制bode图如图6.14(a)所示。 num=1; den=conv([1 1],[1 ,2]) den = 1 3 2 G=tf(num,[den 0]) Transfer funct
65、ion: 1 ----------------- s^3 + 3 s^2 + 2 s bode(G) %绘制bode图 图6.14 (a) Bode图 (b) 用semilogx命令绘制对数幅频和相频特性 【例6.15续】使用semilogx命令绘制对数幅频和相频特性,如图6.14(b)所示。 w=logspace(-1,2); [m,p]=bode(num,den,w); subplot(2,1,1) semilogx(w,20*log10(m)) subplot(2
66、,1,2) semilogx(w,p) 2. nyquist曲线 nyquist曲线是幅相频率特性曲线,使用nyquist命令绘制和计算。 语法: nyquist (G,w) %绘制nyquist曲线 nyquist (G1,G2,…w) %绘制多条nyquist曲线 [Re,Im]= nyquist (G,w) %由w得出对应的实部和虚部 图6.15 nyquist曲线 [Re,Im,w]= nyquist (G) %得出实部、虚部和频率 说明:G为系统模型;w为频率向量,也可以用{wmin,wmax}表示频率的范围;Re为频率特性的实部,Im为频率特性的虚部。 【例6.16】根据传递函数、和,绘制各系统的nyquist曲线,如图6.15所示。 num=1; den1=[conv([1 1],[1 2]),0]; G1=tf(num,den1) Transfer function: 1 ----------------- s^3 + 3 s^2 + 2 s
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。