一、有理函数z变换的部分分式展开

如果信号的z域表示式X(z)X(z)是有理函数,设X(z)X(z)的有理分式表示为:

X(z)=b0+b1z1+b2z2++bmzm1+a1z1+a2z2++anznX(z)=\frac{b_{0}+b_{1}z^{-1}+b_{2}z^{-2}+{\cdots}+b_{m}z^{-m}}{1+a_{1}z^{-1}+a_{2}z^{-2}+{\cdots}+a_{n}z^{-n}}

MATLAB信号处理工具箱提供了一个对X(z)X(z)进行部分分式展开的函数residuez,其语句格式为:

[R,P,K]=residuez(B,A)[R,P,K]=residuez(B,A)

其中,B,A分别表示X(z)X(z)的分子与分母多项式的系数向量;R为部分分式的系数向量;P为极点向量;K为多项式的系数。若X(z)X(z)为有理真分式,则K为零。下面的示例演示了如何使用MATLAB命令对函数X(z)=1818+3z14z2z3X(z)=\frac{18}{18+3z^{-1}-4z^{-2}-z^{-3}}进行部分分式展开,并求出其z反变换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
% 用MATLAB命令求X(z)的部分分式展开,并求其z反变换

B = [18];
A = [18 3 -4 -1];

[R, P, K] = residue(B, A);
R
P
K

# 结果
R =

1.4400
-1.4400
-1.2000


P =

0.5000
-0.3333
-0.3333


K =

[]

其中KK为空矩阵,说明X(z)X(z)为真分式,即没有多项式。P1=P2P_1=P_2,表示系统有一个二重极点。所以,X(z)X(z)的部分分式展开式为:

X(z)=1.4410.5z1+1.441+0.3333z1+1.2(1+0.3333z1)2X(z)=\frac{1.44}{1-0.5z^{-1}} + \frac{-1.44}{1+0.3333z^{-1}}+\frac{-1.2}{(1+0.3333z^{-1})^2}

二、系统函数的零极点分析

离散时间系统的系统函数定义为系统零状态响应的 z 变换与激励的 z 变换之比,即 :

H(z)=Y(z)X(z)H(z)=\frac{Y(z)}{X(z)}

如果系统函数 H(z) 的有理函数表示式为:

H(z)=b1zm+b2zm1++bmz+bm+1a1zn+a2zn1++anz+an+1H(z)=\frac{b_{1}z^{m}+b_{2}z^{m-1}+{\cdots}+b_{m}z+b_{m+1}}{a_{1}z^{n}+a_{2}z^{n-1}+{\cdots}+a_{n}z+a_{n+1}}

那么,在MATLAB中系统函数的零极点就可以通过函数roots得到,也可以借助函数tf2zp得到,tf2zp的语句格式为:

[Z,P,K]=tf2zp(B,A)[Z, P, K] = tf2zp(B,A)

其中,BBAA分别表示函数H(z)H(z)的分子与分母多项式的系数向量。它的作用是将H(z)H(z)的有理分式表示式转换为零极点增益形式,即:

H(z)=k(zz1)(zz2)(zzm)(zp1)(zp2)(zpm)H(z) = k\frac{(z-z_{1})(z-z_{2}){\cdots}(z-z_{m})}{(z-p_{1})(z-p_{2}){\cdots}(z-p_{m})}

下面的示例演示了如何使用MATLAB命令求系统函数H(z)=z+0.32z2+z+0.16H(z)=\frac{z+0.32}{z^2+z+0.16}的零极点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
% 使用tf2zp函数求解系统函数的零极点

B = [1 0.32];
A = [1 1 0.16];

[R, P, K] = tf2zp(B, A)

# 结果
R =

-0.3200


P =

-0.8000
-0.2000


K =

1

因此,零点为z=0.32z=0.32,极点为p1=0.8p_1=0.8p2=0.2p_2=0.2

若要获得系统函数H(z)H(z)的零极点分布图,可直接应用zplane函数,其语法格式为:

zplane(B,A)zplane(B,A)

其中,B与A分别表示H(z)H(z)的分子和分母多项式的系数向量。它的作用是在Z平面上画出单位元、零点与极点。下面的示例演示了如何使用zplane函数求解系统函数H(z)=z20.36z21.52z+0.68H(z)=\frac{z^{2}-0.36}{z^{2}-1.52z+0.68}的零极点并画出零极点分布图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
% 求解零极点以及画出零极点分布图

B = [1 0 -0.36];
A = [1 -1.52 0.68];
[R, P, K] = tf2zp(B, A)
zplane(B,A);

# 结果
R =

0.6000
-0.6000


P =

0.7600 + 0.3200i
0.7600 - 0.3200i


K =

1

可见,该因果系统的零极点全部在单位元内,过系统是稳定的。

三、系统函数的零极点分布与其时域特性的关系

与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数与z域函数之间的对应关系。因此,z变换的函数从形式可以反映h(n)h(n)的部分内在性质。我们仍旧通过讨论H(z)H(z)一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。下面的示例演示了如何使用MATLAB画出以下系统函数的零极点分布图,以及对应的时域单位取样响应h(n)h(n)的波形,并分析系统函数的极点对时域波形的影响:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
% 系统函数的零极点分布与其时域特性的关系

B1 = [1,0];
A1 = [1 -0.8];
subplot(7,2,1);
zplane(B1, A1);
title("极点在单位元内的正实数");
subplot(7,2,2);
impz(B1, A1, 30);
grid on;

B2 = [1,0];
A2 = [1 0.8];
subplot(7,2,3);
zplane(B2, A2);
title("极点在单位元内的负实数");
subplot(7,2,4);
impz(B2, A2, 30);
grid on;


B3 = [1,0];
A3 = [1 -1.2 0.72];
subplot(7,2,5);
zplane(B3, A3);
title("极点在单位元内的共轭复数");
subplot(7,2,6);
impz(B3, A3, 30);
grid on;


B4 = [1,0];
A4 = [1 -1];
subplot(7,2,7);
zplane(B4, A4);
title("极点在单位元上的实数1");
subplot(7,2,8);
impz(B4, A4, 30);
grid on;


B5 = [1,0];
A5 = [1 -1.6 1];
subplot(7,2,9);
zplane(B5, A5);
title("极点在单位圆上的共轭复数");
subplot(7,2,10);
impz(B5, A5, 30);
grid on;


B6 = [1,0];
A6 = [1 -1.2];
subplot(7,2,11);
zplane(B6, A6);
title("极点在单位圆外的正实数");
subplot(7,2,12);
impz(B6, A6, 30);
grid on;


B7 = [1,0];
A7 = [1 -2 1.36];
subplot(7,2,13);
zplane(B7, A7);
title("极点在单位元外为的共轭复数");
subplot(7,2,14);
impz(B7, A7, 30);
grid on;

由上图可知,当极点位于单位院内时,h(n)h(n)为衰减序列;当极点位于单位圆上时,h(n)h(n)为等幅序列;当极点位于单位圆外时,h(n)h(n)为增幅序列。若h(n)h(n)有一阶实数极点,则h(n)h(n)为指数序列;若h(n)h(n)有一阶共轭极点,则h(n)h(n)为指数震荡序列;若h(n)h(n)的极点位于虚轴左边,则h(n)h(n)序列按一正一负的规律交替变化。

四、离散时间LTI系统的频率特效分析

对于因果稳定系统的离散时间系统,如果激励序列为正弦序列x(n)=Asin(nw)u(n)x(n)=Asin(nw)u(n),则系统的稳态响应为yss(n)=AH(ejw)sin[nw+φ(w)]u(n)y_{ss}(n)=A|H(e^{jw})|sin[nw+\varphi(w)]u(n)。其中,H(ejw)H(e^{jw})通常是复数。离散时间系统的频率响应定义为:

H(ejw)=H(ejw)ejφ(w)H(e^{jw})=|H(e^{jw})|e^{j\varphi(w)}

其中,H(ejw)|H(e^{jw})|常被称为离散时间系统的幅频特性;φ(w)\varphi(w)被称为离散时间系统的相频特性;H(ejw)H(e^{jw})是以wsw_s为周期的周期函数。因此,只要分析H(ejw)H(e^jw)w<π|w|<\pi范围内的情况,便可分析出系统的整个频率特性。

MATLAB提供了求离散时间系统频率响应特性的函数freqz,调用freqz的格式主要有两种。一种形式为:

[H,w]=freqz(B,A,N)[H, w] = freqz(B,A,N)

其中,施工中····