线性系统时域分析
线性系统时域分析
线性时移不变(LTI)系统特性
在分析LTI系统时,两个性质很重要。线性和时不变性。所谓线性就是指系统满足齐次性和叠加性。
假设系统在输入信号
x
1
(
t
)
x_1(t)
x1(t)作用时的响应信号为
y
1
(
t
)
y_1(t)
y1(t),在输入信号
x
2
(
t
)
x_2(t)
x2(t)作用时的响应信号为
y
2
(
t
)
y_2(t)
y2(t),给定两个常数a和b,如果当输入信号为
x
(
t
)
x(t)
x(t)时,系统的响应信号为
y
(
t
)
y(t)
y(t)。且满足:
x
(
t
)
=
x
1
(
t
)
+
x
2
(
t
)
x(t)=x_1(t)+x_2(t)
x(t)=x1(t)+x2(t)
y
(
t
)
=
y
1
(
t
)
+
y
2
(
t
)
y(t)=y_1(t)+y_2(t)
y(t)=y1(t)+y2(t)
则该系统具有叠加性。如果满足:
x
(
t
)
=
a
x
1
(
t
)
x(t)=ax_1(t)
x(t)=ax1(t)
y
(
t
)
=
a
y
1
(
t
)
y(t)=ay_1(t)
y(t)=ay1(t)
则该系统具有齐次性。如果系统是线性系统时,要同时满足齐次性和叠加性。
又假设系统在输入信号
x
(
t
)
x(t)
x(t)作用下时的响应信号为
y
(
t
)
y(t)
y(t),对一个给定时间常数
t
0
t_0
t0,如果当输入信号为
x
(
t
−
t
0
)
x(t-t_0)
x(t−t0)时,系统的响应信号为
y
(
t
−
t
0
)
y(t-t_0)
y(t−t0),则该系统具有时不变性。
同时具有线性和时不变性的系统叫做线性时不变系统。
线性时不变系统的表示方法
1、线性系统的表示方法
(1)常系数线性微分/差分方程
对于单输入单输出连续时间LTI系统,常系数线性微分方程为:
式中,
y
(
i
)
(
t
)
y^{(i)}(t)
y(i)(t)是输出的第i阶导数,
x
(
i
)
(
t
)
x^{(i)}(t)
x(i)(t)是输入的第i阶导数,其余的系数均为常数。
(2)系统传递函数
连续LTI系统的传递函数定义为系统输出的拉普拉斯变换与系统输入的拉普拉斯变换之比。即可得到单输入单输出连续LTI系统的传递函数:
离散LTI系统的传递函数定义为系统输出的z变换和系统输入的z变换之比。单输入与单输出的系统传递函数:
(3)零极点增益模型
对传递函数进行因式分解,可将传递函数模型改写成零极点增益模型:
连续系统:
离散系统:
(4)极点留数模型
当零极点模型中极点都为单极点时,可将零极点增益模型分解为部分分式:
连续系统:
离散系统:
(5)二次分式模型
由于LTI系统中经常会包含复数的零极点,这时用零极点增益法就显得繁琐。对于系统多项式,其复数的零极点必定是共轭的。把每一对共轭极点或零点多项式合并,就可以得出多个二次分式模型。
连续模型:
离散模型:
可以看出二次分式模型是零极点增益模型的变种。
(6)状态空间模型
设x为状态向量,u为激励(输入)向量,y为输出向量。系统的状态方程如下:
连续系统:
离散系统:
2、系统模型中的转换函数
MATLAB有如下的函数用于系统模型之间的互相转换:
函数名 | 功能说明 |
---|---|
ss2tf | 状态空间模型转换为传递函数模型 |
ss2zp | 状态空间模型转换为零极点增益模型 |
ss2sos | 状态空间模型转换为二次分式模型 |
rf2ss | 传递函数模型转换为状态空间模型 |
tf2zp | 传递函数模型转换为零极点增益模型 |
tf2sos | 传递函数模型转换为二次分式模型 |
zp2tf | 零极点增益模型转换为传递函数模型 |
zp2ss | 零极点增益模型转换为状态空间模型 |
zp2sos | 零极点增益模型转换为二次分式模型 |
sos2tf | 二次分式模型转换为传递函数模型 |
sos2zp | 二次分式模型转换为零极点增益模型 |
sos2ss | 二次分式模型转换为状态空间模型 |
例题1:
%% 求系统函数的零点、极点、和增益系数
num=[2,3];den=[1,0.4,1];
[num,den]=eqtflength(num,den);%使长度相等
[z,p,k]=tf2zp(num,den);
线性时不变系统的时域响应
线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。一个连续时间LTI系统的输入信号x(t)输出信号y(t)的关系可以用下面的微分方程表示:
∑
k
=
0
N
a
k
d
k
y
(
t
)
d
t
k
=
∑
k
=
0
M
d
k
x
(
t
)
d
t
k
\sum_{k=0}^Na_k\frac{d^ky(t)}{dt^k}=\sum_{k=0}^M\frac{d^kx(t)}{dt^k}
∑k=0Nakdtkdky(t)=∑k=0Mdtkdkx(t)
上面的式子描述了系统的隐式表示形式,如果要求得显式的表示形式,必须对微分方程和差分方程求解。
MATLAB中的函数用法如下:
(1)impulse函数
impulse(b,a):该调用格式以默认的方式由向量a和b表示的连续系统在指定时间范围内的冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。
impulse(b,a,t):绘出系统在0~t时间范围内冲激响应的时域波形。
impulse(b,a,t1:p:t2):绘出在t1~t2的时间范围内,且以时间间隔P均匀采样的冲激响应。
y=impulse(b,a,t1:p:t2):不绘出波形,而是求出系统冲激响应的数值解。
例题2:
%% 系统的单位冲激响应
a=[1,5,6];
b=[3,2];
impulse(b,a);
(2)step()函数
功能:求连续系统的单位阶跃响应,与impulse()函数的调用格式一样。
(3)initial函数
功能:求连续系统的零输入响应。
(4)lsim函数
功能:求任意输入的连续系统进行仿真。
例题2:
%% 例题4-20
b=[1];a=[1,0,1];%系统的传递函数参数
[A,B,C,D]=tf2ss(b,a);
sys=ss(A,B,C,D);%系统的状态空间
t=0:0.1:30;%响应的时间区间
f=cos(t);%系统的输入
zi=[-1;0];%系统的初始状态
y1=step(sys,t);%系统的单位阶跃响应
y2=initial(sys,zi,t);%系统的零输入响应
y3=lsim(sys,f,t);%系统的零状态响应
y4=lsim(sys,f,t,zi);%系统的全响应
subplot(141);plot(t,y1);
xlabel('时间t');title('系统的单位阶跃响应');
line([0,30],[0,0]);
subplot(142);plot(t,y2);
xlabel('时间t');title('系统的零输入响应');
line([0,30],[0,0]);
subplot(143);plot(t,y3);
xlabel('时间t');title('系统的零状态响应');
line([0,30],[0,0]);
subplot(144);
plot(t,y4);
xlabel('时间t');title('系统的全响应');
line([0,30],[0,0]);
离散时间系统的时域响应及MATLAB实现
设描述离散系统的差分方程为:
∑
i
=
0
N
a
i
y
(
k
−
i
)
=
∑
j
=
0
M
b
i
y
(
k
−
j
)
\sum_{i=0}^Na_iy(k-i)=\sum_{j=0}^Mb_iy(k-j)
∑i=0Naiy(k−i)=∑j=0Mbiy(k−j)
则可以用向量a和b表示该系统即:
a
=
[
a
0
,
a
1
,
.
.
.
,
a
N
]
a=[a_0,a_1,...,a_N]
a=[a0,a1,...,aN],
b
=
[
b
0
,
b
1
,
.
.
.
,
b
M
]
b=[b_0,b_1,...,b_M]
b=[b0,b1,...,bM]
离散系统相关量函数如下:
(1)impz()函数
功能:求离散系统的单位冲激响应。
几种调用格式:
impz(b,a):以默认方式绘出向量a和b定义的离散系统h(k)的时域波形。
impz(b,a,n):绘出向量a和b定义的离散系统在0~n离散时间范围内单位脉冲响应h(k)的时域波形
impz(b,a,n1:n2):绘出向量a和b定义的离散系统在n1~n2(n1<n2)离散时间范围内单位脉冲响应h(k)的时域波形。
y=impz(b,a,n1:n2)不绘出系统的h(k)的时域波形,而是求出向量a和b定义的离散系统在n1~n2离散时间范围内单位脉冲响应h(k)的数值解。
例题3:
%% 例题4-21
b=[1];a=[1,-1,0.8];%差分方程的系数
n=0:15;%序列的个数
fn=0.5.^n;%输入序列
y1=filter(b,a,fn);%零状态响应
y2=impz(b,a,16);%单位响应
subplot(1,2,1),stem(n,y1,'filled');title('零状态响应');grid on
subplot(1,2,2),stem(n,y2,'filled');title('单位响应');grid on
(2)stepz函数
功能:求离散系统的单位阶跃响应。
格式:stepz(num,den)
(3)dinitial函数
功能:求离散系统的零输入响应。
格式:dinitial(num,den,x0)。
(4)filter函数
功能:求离散系统的零状态响应。
格式:filter(num,den,u)
例题4:
%% 例题4-22
B=1;A=[1,-0.8];
N=0:31;x=0.8.^N;
y=filter(B,A,x);
subplot(2,1,1);stem(x);
subplot(2,1,2);stem(y);
参考文献
赵鸿图,茅艳. 通信原理MATLAB仿真教程. 人民邮电出版社,2010.