matlab系统仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linear Simulation Results 1 0.8 0.6 0.4 0.2
Amplitude
0 -0.2 -0.4 -0.6 -0.8 -1
0
2
4
6
8
10 Time (sec)
12
14
16
18
20
例2
例 求连续系统闭环传递函数 G ( s)
s5 的阶跃响应; 求离散系统闭环传 2 s 0.5s 1
注:Method 选项:zoh——零阶保持器;foh——一阶保持器;tustin——双线性变换法; prewarp——改进的双线性变换法;matched——零极点匹配法
%只有状态空间形式,使用离散 化的零阶保持器方法
时域分析——step
阶跃响应仿真函数(step) [y,x,t]=step(num,den) step(num,den) step(num,den,t) [y]=step(num,den,t) %时间向量t是由系统模型特征自动生成,状 态变量x返回为空矩阵。 %直接调用函数,不产生输出值,而直接绘 制系统的阶跃响应曲线。 %t 为选定的仿真时间向量,其他同上。 %t为选定的仿真时间向量,一般可由 t=0:step:end等步长产生。该函数返回值 y为系统在仿真中所得输出组成的矩阵。 注:线性系统的稳态值可以通过函数 dcgain()来求得,其调用格式为 dc=dcgain(num,den) dc=dcgain(a,b,c,d)
Z = [z1, z 2,...z m]
P = [p , p ,...p ]
1 2 m
简记为(Z,P,K)形式,称为零极点增益三对组模型参数。
控制系统数学模型的表示形式
5
部分分式形式
将传递函数表示为如下形式
ri G(s)=K Σ +h(s) i=1 (s-p ) i
n
(2-7)
模型参数可表示为 极点留数向量: R [r1 , r 2 ,...r n]
(2-1)
A [a0 , a1,, , an ] n+1维
B=[b0 ,b1 ,L,b , m]
m+1维
控制系统数学模型的表示形式
2
状态方程形式 当控制系统输入、输出为多变量时,可用向量分别表示为 U(t),Y(t),系统的内部状态变量为X(t).
= AX(t) + BU(t) ì ï X(t) ï í ï ï î Y(t) = CX(t) + DU(t) 模型参数形式为:
m
将(2-4)中的分子,分母分解为因式连乘形式,则有
(s- z1 )(s- z 2 ) (s- z m ) G(s) = K =K (s- p1 )(s- p 2 ) (s- p n ) P (s- p j )
i=1 n j=1
P (s- z i )
模型参数可表示为 系统零点向量: 系统零点向量:
模型参数可表示为 传递函数分母系数向量
(2-4)
A = [a 0 ,a1 ,,a n ]
B = [b0, b1,...bm]
传递函数分子系数向量
用num=B,den=A分别表示分子,分母参数向量,则可简练的表示为 (num,den),称为传递函数二对组模型参数
控制系统数学模型的表示形式
4
零极点增益形式
控制系统的连接——并联
系统 G1 (s)和G2 (s) 并联连接合成的系统传递函数为 G(s) G1 (S ) G2 (s) 。 MATLAB提供了进行模型并联的函数parallel,其命令格式如下: [nump,denp]=parallel(num1,den1,num2,den2) [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2) %表示将并联连接函数 进行相加 %表示并联连接两个状 态空间系统 [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2,inp1,inp2,out1,out2) 其中inp1和inp2分别指定两系统中要连接在一起的输入端编号, 既可以是标量也 可以是向量;out1和out2分别指定要相加的输出编号,同输入类似。 例如:1.inp1=1,inp2=3;2.inp[1,3],inp[2,1] 1. 表示系统1的第一个输入端与系统2的第三个输入端相连接; 2. 表示系统1的第一个输入端与系统2的第二个输入端相连接,以及系统1 的第三个输入端与系统2的第一个输入端相连接。
数学模型的转换
1 2
微分方程与传递函数形式
两者的模型参数向量完全一样。
传递函数与零极点增益形式 Matlab函数tf2zp()和zp2tf()用来完成两种形式之间的转换 如 [z , p , k]=tf2zp(num,den);[num,den]=zp2tf(z , p , k)
3
状态方程与传递函数或零极点增益形式 ss2tf()和tf2ss用来状态方程与传递函数间转换 如 [num,den]=ss2tf(A,B,C,D);[A,B,C,D]=tf2ss(num,den)
时域分析——常用时域分析函数
initial(G):连续系统的零输入响应 lism(G):连续系统对任意输入的响应 gensig():产生一些信号,其调用格式为 [u,t]=gensig(type,tau,tf,ts) 其中 type 表示产生信号的类型:‘sin’正弦波、‘square’方波、‘pulse’脉冲系列等; tau 表示信号周期;tf 表示信号持续时间;ts 表示采样周期;u 为所产生的信号。 由函数 lsim()可以求出系统在任意输入下的时间响应曲线,其格式为 y=lsim(sys,u,t) 其中 u 表示输入,sys 为系统对象。
A/D & D/A
将连续系统经取样保持、 A/D变换后, 可得到等效的离散系统, 在MATLAB 中可由c2d和c2dm函数得到。连续系统离散化命令格式如下: [ad,bd]=c2d(a,b,T) [ad,bd,cd,dd]=c2dm(a,b,c,d,T,’method’) [numd,dend]=c2dm(num,den,T,’method’) %T是采样周期,‘method’选项 允许用户采用的转换算法选项 离散系统的连续化在MATLAB中可由d2c和d2cm函数得到: [ac,bc]=d2c(a,b,ts) [ac,bc,cc,dc]=d2cm(a,b,c,d,T,’method’) [numc,denc]=d2cm(num,den,T,’method’)
系统极点向量: P [ p , p ,... p ] 1 2 n
余式系数向量: H [h , h ,...h ] 0 1 l 简记为(R,P,H),称为极点留数模型参数。
线性时不变系统的对象数据类型描述
新版Matlab语言中,添加了“对象数据类型”,可以用来建立各种系 统模型。 G=tf(num,den) G=zpk(Z,P,K) G=ss(A,B,C,D) 也可以通过以下函数获得模型参数向量 [num,den]=tfdata(G) or [num,den]=tfdata(G,’v’) [A,B,C,D]=ssdata(G) or [A,B,C,D]=ssdata(G,’v’) [Z,P,K]=zpkdata(G) or [Z,P,K]=zpkdata(G,’v’)
控制系统数学模型的表示形式
根据系统数学描述方法的不同,可建立不同形式的数学模型
1
微分方程形式
设线性定常系统输入、输出量是单变量,分别为u(t),y(t)
a 0 y(n) + a1y(n-1) +......+ a n-1y'+ a n y = b0u (m) +......+ bmu
模型参数形式为: 输出系统向量 输入系统向量
控制ห้องสมุดไป่ตู้统的连接——串联
系统 G1 (s) 和 G2 (s) 串联连接合成的系统传递函数为 G(s) G1 (s) G2 (s) 。 MATLAB提供了进行模型串联的函数series,其命令格式如下: [num,dens]=series(num1,den1,num2,den2) [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2) [a,b,c,d]=serues(a1,b1,c1,d1,a2,b2,c2,d2,out1,in2) %表示系统1的部分输 出和系统2的部分输入 进行连接 %表示将串联连接的传 递函数进行相称 %表示串联连接两个状 态空间系统
例1
例 计算系统在正弦波信号下的时间响应(正弦波的周期为 4s,持续时间为 1 G 20s,采样周期为 0.1s),系统传递函数为 。 s 2 3s 2 解 程序编制如下: [u,t]=gensig(‘sin’,4,20,0.1);%产生一个值为一的正弦信号 lsim(tf([1],[1 3 2]),u,t);
例
2s 2 2( s 1) 6 8 2 s 5s 6 ( s 2)( s 3) s2 s3
• • • • • • • >> a=[1 5 6]; g=tf(conv([0 2],[1 -1]),conv([1 2],[1 3])) >> b=[2 -2]; >> G=tf(b,a) >> [z p k]=tf2zp(b,a) >> [x y z]=residue(b,a) >>[z p k]=zpkdata(G) >>[z p k]=zpkdata(G,’v’)
数学模型的转换
ss2zp()和zp2ss用来状态方程与零极点增益形式间转换 如 [z,p,k]=ss2tf(A,B,C,D);[A,B,C,D]=tf2ss(z,p,k)
4
部分分式与传递函数或零极点增益形式
传递函数转化为部分分式形式的关键在于求取极点的留数
可通过residue()函数来完成。 如[R , P , H]=residue(num,den) [num,den]=residue(R , P , H)
控制系统的连接——反馈
MATLAB提供了进行模型反馈连接的函数feedback,其格式如下: [numf,denf]=feedback(num1,den1,num2,den2,sign) [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign) 表示将两个系统按反馈方式连接,一般而言,系统1为前向通道传递函数, 系统2为反馈通道传递函数。sign是可选函数,sign=-1时为负反馈;sign=1时为 正反馈。默认值是负反馈。 [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,inp1,out1) 表示部分反连接,将系统 1 的指定输出 out1 连接到系统 2 的输入,系统 2 的输 出连接到系统 1 的指定输入 inp1,以此构成闭环系统。
2 z 2 3.4 z 1.5 递函数 H ( s) 2 的阶跃响应。 z 1.6 z 0.8
解 程序编制如下: num=[1 5];den=[1 0.5 1];t=0:0.02:20; [y]=step(num,den,t);%连续系统的阶跃响应曲线 [y1]=impulse(num,den,t);%连续系统的脉冲激励响应曲线 subplot(2,2,1);plot(t,y,’k’);grid subplot(2,2,2);plot(t,y,’k’);grid num=[2 3.4 1.5];den=[1 -1.6 0.8]; subplot(2,2,3);dstep(num,den);%离散系统的阶跃响应曲线 subplot(2,2,4);dimpulse(num,den);%离散系统的脉冲激励响应曲线
系统系数矩阵A,系统输入矩阵B
(2-2)
系统输出矩阵C,直接传输矩阵D
简记为(A,B,C,D)形式。
控制系统数学模型的表示形式
3
传递函数形式
在零初始条件下,将(2-1) 方程两边进行拉氏变换,则有
Y(s) b0sm + + bm-1s+ bm G(s) = = U(s) a 0sn + + a n-1s+ a n
时域分析——impulse
冲激励响应仿真函数(impulse) 连续系统的命令格式为 [y,x,t]=impulse(num,den) impulse(num,den) impulse(num,den,t) [y]= impulse(num,den,t) 对于离散系统, 只需在连续系统对应函数前加 “d” 即可, 如 dstep, dimpulse 等,其调用格式与 step,impulse 类似。
Amplitude
0 -0.2 -0.4 -0.6 -0.8 -1
0
2
4
6
8
10 Time (sec)
12
14
16
18
20
例2
例 求连续系统闭环传递函数 G ( s)
s5 的阶跃响应; 求离散系统闭环传 2 s 0.5s 1
注:Method 选项:zoh——零阶保持器;foh——一阶保持器;tustin——双线性变换法; prewarp——改进的双线性变换法;matched——零极点匹配法
%只有状态空间形式,使用离散 化的零阶保持器方法
时域分析——step
阶跃响应仿真函数(step) [y,x,t]=step(num,den) step(num,den) step(num,den,t) [y]=step(num,den,t) %时间向量t是由系统模型特征自动生成,状 态变量x返回为空矩阵。 %直接调用函数,不产生输出值,而直接绘 制系统的阶跃响应曲线。 %t 为选定的仿真时间向量,其他同上。 %t为选定的仿真时间向量,一般可由 t=0:step:end等步长产生。该函数返回值 y为系统在仿真中所得输出组成的矩阵。 注:线性系统的稳态值可以通过函数 dcgain()来求得,其调用格式为 dc=dcgain(num,den) dc=dcgain(a,b,c,d)
Z = [z1, z 2,...z m]
P = [p , p ,...p ]
1 2 m
简记为(Z,P,K)形式,称为零极点增益三对组模型参数。
控制系统数学模型的表示形式
5
部分分式形式
将传递函数表示为如下形式
ri G(s)=K Σ +h(s) i=1 (s-p ) i
n
(2-7)
模型参数可表示为 极点留数向量: R [r1 , r 2 ,...r n]
(2-1)
A [a0 , a1,, , an ] n+1维
B=[b0 ,b1 ,L,b , m]
m+1维
控制系统数学模型的表示形式
2
状态方程形式 当控制系统输入、输出为多变量时,可用向量分别表示为 U(t),Y(t),系统的内部状态变量为X(t).
= AX(t) + BU(t) ì ï X(t) ï í ï ï î Y(t) = CX(t) + DU(t) 模型参数形式为:
m
将(2-4)中的分子,分母分解为因式连乘形式,则有
(s- z1 )(s- z 2 ) (s- z m ) G(s) = K =K (s- p1 )(s- p 2 ) (s- p n ) P (s- p j )
i=1 n j=1
P (s- z i )
模型参数可表示为 系统零点向量: 系统零点向量:
模型参数可表示为 传递函数分母系数向量
(2-4)
A = [a 0 ,a1 ,,a n ]
B = [b0, b1,...bm]
传递函数分子系数向量
用num=B,den=A分别表示分子,分母参数向量,则可简练的表示为 (num,den),称为传递函数二对组模型参数
控制系统数学模型的表示形式
4
零极点增益形式
控制系统的连接——并联
系统 G1 (s)和G2 (s) 并联连接合成的系统传递函数为 G(s) G1 (S ) G2 (s) 。 MATLAB提供了进行模型并联的函数parallel,其命令格式如下: [nump,denp]=parallel(num1,den1,num2,den2) [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2) %表示将并联连接函数 进行相加 %表示并联连接两个状 态空间系统 [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2,inp1,inp2,out1,out2) 其中inp1和inp2分别指定两系统中要连接在一起的输入端编号, 既可以是标量也 可以是向量;out1和out2分别指定要相加的输出编号,同输入类似。 例如:1.inp1=1,inp2=3;2.inp[1,3],inp[2,1] 1. 表示系统1的第一个输入端与系统2的第三个输入端相连接; 2. 表示系统1的第一个输入端与系统2的第二个输入端相连接,以及系统1 的第三个输入端与系统2的第一个输入端相连接。
数学模型的转换
1 2
微分方程与传递函数形式
两者的模型参数向量完全一样。
传递函数与零极点增益形式 Matlab函数tf2zp()和zp2tf()用来完成两种形式之间的转换 如 [z , p , k]=tf2zp(num,den);[num,den]=zp2tf(z , p , k)
3
状态方程与传递函数或零极点增益形式 ss2tf()和tf2ss用来状态方程与传递函数间转换 如 [num,den]=ss2tf(A,B,C,D);[A,B,C,D]=tf2ss(num,den)
时域分析——常用时域分析函数
initial(G):连续系统的零输入响应 lism(G):连续系统对任意输入的响应 gensig():产生一些信号,其调用格式为 [u,t]=gensig(type,tau,tf,ts) 其中 type 表示产生信号的类型:‘sin’正弦波、‘square’方波、‘pulse’脉冲系列等; tau 表示信号周期;tf 表示信号持续时间;ts 表示采样周期;u 为所产生的信号。 由函数 lsim()可以求出系统在任意输入下的时间响应曲线,其格式为 y=lsim(sys,u,t) 其中 u 表示输入,sys 为系统对象。
A/D & D/A
将连续系统经取样保持、 A/D变换后, 可得到等效的离散系统, 在MATLAB 中可由c2d和c2dm函数得到。连续系统离散化命令格式如下: [ad,bd]=c2d(a,b,T) [ad,bd,cd,dd]=c2dm(a,b,c,d,T,’method’) [numd,dend]=c2dm(num,den,T,’method’) %T是采样周期,‘method’选项 允许用户采用的转换算法选项 离散系统的连续化在MATLAB中可由d2c和d2cm函数得到: [ac,bc]=d2c(a,b,ts) [ac,bc,cc,dc]=d2cm(a,b,c,d,T,’method’) [numc,denc]=d2cm(num,den,T,’method’)
系统极点向量: P [ p , p ,... p ] 1 2 n
余式系数向量: H [h , h ,...h ] 0 1 l 简记为(R,P,H),称为极点留数模型参数。
线性时不变系统的对象数据类型描述
新版Matlab语言中,添加了“对象数据类型”,可以用来建立各种系 统模型。 G=tf(num,den) G=zpk(Z,P,K) G=ss(A,B,C,D) 也可以通过以下函数获得模型参数向量 [num,den]=tfdata(G) or [num,den]=tfdata(G,’v’) [A,B,C,D]=ssdata(G) or [A,B,C,D]=ssdata(G,’v’) [Z,P,K]=zpkdata(G) or [Z,P,K]=zpkdata(G,’v’)
控制系统数学模型的表示形式
根据系统数学描述方法的不同,可建立不同形式的数学模型
1
微分方程形式
设线性定常系统输入、输出量是单变量,分别为u(t),y(t)
a 0 y(n) + a1y(n-1) +......+ a n-1y'+ a n y = b0u (m) +......+ bmu
模型参数形式为: 输出系统向量 输入系统向量
控制ห้องสมุดไป่ตู้统的连接——串联
系统 G1 (s) 和 G2 (s) 串联连接合成的系统传递函数为 G(s) G1 (s) G2 (s) 。 MATLAB提供了进行模型串联的函数series,其命令格式如下: [num,dens]=series(num1,den1,num2,den2) [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2) [a,b,c,d]=serues(a1,b1,c1,d1,a2,b2,c2,d2,out1,in2) %表示系统1的部分输 出和系统2的部分输入 进行连接 %表示将串联连接的传 递函数进行相称 %表示串联连接两个状 态空间系统
例1
例 计算系统在正弦波信号下的时间响应(正弦波的周期为 4s,持续时间为 1 G 20s,采样周期为 0.1s),系统传递函数为 。 s 2 3s 2 解 程序编制如下: [u,t]=gensig(‘sin’,4,20,0.1);%产生一个值为一的正弦信号 lsim(tf([1],[1 3 2]),u,t);
例
2s 2 2( s 1) 6 8 2 s 5s 6 ( s 2)( s 3) s2 s3
• • • • • • • >> a=[1 5 6]; g=tf(conv([0 2],[1 -1]),conv([1 2],[1 3])) >> b=[2 -2]; >> G=tf(b,a) >> [z p k]=tf2zp(b,a) >> [x y z]=residue(b,a) >>[z p k]=zpkdata(G) >>[z p k]=zpkdata(G,’v’)
数学模型的转换
ss2zp()和zp2ss用来状态方程与零极点增益形式间转换 如 [z,p,k]=ss2tf(A,B,C,D);[A,B,C,D]=tf2ss(z,p,k)
4
部分分式与传递函数或零极点增益形式
传递函数转化为部分分式形式的关键在于求取极点的留数
可通过residue()函数来完成。 如[R , P , H]=residue(num,den) [num,den]=residue(R , P , H)
控制系统的连接——反馈
MATLAB提供了进行模型反馈连接的函数feedback,其格式如下: [numf,denf]=feedback(num1,den1,num2,den2,sign) [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign) 表示将两个系统按反馈方式连接,一般而言,系统1为前向通道传递函数, 系统2为反馈通道传递函数。sign是可选函数,sign=-1时为负反馈;sign=1时为 正反馈。默认值是负反馈。 [a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,inp1,out1) 表示部分反连接,将系统 1 的指定输出 out1 连接到系统 2 的输入,系统 2 的输 出连接到系统 1 的指定输入 inp1,以此构成闭环系统。
2 z 2 3.4 z 1.5 递函数 H ( s) 2 的阶跃响应。 z 1.6 z 0.8
解 程序编制如下: num=[1 5];den=[1 0.5 1];t=0:0.02:20; [y]=step(num,den,t);%连续系统的阶跃响应曲线 [y1]=impulse(num,den,t);%连续系统的脉冲激励响应曲线 subplot(2,2,1);plot(t,y,’k’);grid subplot(2,2,2);plot(t,y,’k’);grid num=[2 3.4 1.5];den=[1 -1.6 0.8]; subplot(2,2,3);dstep(num,den);%离散系统的阶跃响应曲线 subplot(2,2,4);dimpulse(num,den);%离散系统的脉冲激励响应曲线
系统系数矩阵A,系统输入矩阵B
(2-2)
系统输出矩阵C,直接传输矩阵D
简记为(A,B,C,D)形式。
控制系统数学模型的表示形式
3
传递函数形式
在零初始条件下,将(2-1) 方程两边进行拉氏变换,则有
Y(s) b0sm + + bm-1s+ bm G(s) = = U(s) a 0sn + + a n-1s+ a n
时域分析——impulse
冲激励响应仿真函数(impulse) 连续系统的命令格式为 [y,x,t]=impulse(num,den) impulse(num,den) impulse(num,den,t) [y]= impulse(num,den,t) 对于离散系统, 只需在连续系统对应函数前加 “d” 即可, 如 dstep, dimpulse 等,其调用格式与 step,impulse 类似。