9299.net
大学生考试网 让学习变简单
当前位置:首页 >> 理学 >>

离散时间LTI系统的时域分析

离散时间LTI系统的时域分析


第3章

离散时间 LTI 系统的时域分析
3.1 实验目的

学会运用 MATLAB 求解离散时间系统的零状态响应; 学会运用 MATLAB 求解离散时间系统的单位取样响应; 学会运用 MATLAB 求解离散时间系统的卷积和。

3.2 3.2.1

实验原理及实例分析

离散时间系统的响应

离散时间 LTI 系统可用线性常系数差分方程来描述,即

∑ a y (n ? i ) = ∑ b x (n ? j )
i =0 i j =0 j

N

M

(3-1)

其中, a i ( i = 0 ,1,…,N)和 b j ( j = 0 ,1,…,M)为实常数。 MATLAB 中函数 filter 可对式(13-1)的差分方程在指定时间范围内的输入序列所产生 的响应进行求解。函数 filter 的语句格式为 y=filter(b,a,x) 其中,x 为输入的离散序列;y 为输出的离散序列;y 的长度与 x 的长度一样;b 与 a 分别为 差分方程右端与左端的系数向量。 【实例 3-1】 已知某 LTI 系统的差分方程为

3 y (n) ? 4 y (n ? 1) + 2 y (n ? 2) = x(n) + 2 x(n ? 1)
试用 MATLAB 命令绘出当激励信号为 x ( n) = (1 / 2) n u ( n) 时,该系统的零状态响应。 解:MATLAB 源程序为
>>a=[3 -4 2]; >>b=[1 2]; >>n=0:30; >>x=(1/2).^n; >>y=filter(b,a,x); >>stem(n,y,'fill'),grid on >>xlabel('n'),title('系统响应 y(n)')

程序运行结果如图 3-1 所示。

图 3-1

实例 3-1 系统的零状态响应

3.2.2

离散时间系统的单位取样响应

系统的单位取样响应定义为系统在 δ (n) 激励下系统的零状态响应,用 h(n) 表示。 MATLAB 求解单位取样响应可利用函数 filter,并将激励设为前面所定义的 impDT 函数。 例如,求解实例 13-1 中系统的单位取样响应时,MATLAB 源程序为
>>a=[3 -4 2]; >>b=[1 2]; >>n=0:30; >>x=impDT(n); >>h=filter(b,a,x); >>stem(n,h,'fill'),grid on >>xlabel('n'),title('系统单位取样响应 h(n)')

程序运行结果如图 3-2 所示。

图 3-2

实例 13-1 的系统单位取样响应

MATLAB 另一种求单位取样响应的方法是利用控制系统工具箱提供的函数 impz 来实 现。impz 函数的常用语句格式为 impz(b,a,N) 其中,参数 N 通常为正整数,代表计算单位取样响应的样值个数。 【实例 3-2】 已知某 LTI 系统的差分方程为

3 y (n) ? 4 y (n ? 1) + 2 y (n ? 2) = x(n) + 2 x(n ? 1)
利用 MATLAB 的 impz 函数绘出该系统的单位取样响应。 解:MATLAB 源程序为
>>a=[3 -4 2]; >>b=[1 2]; >>n=0:30; >>impz(b,a,30),grid on >>title('系统单位取样响应 h(n)')

程序运行结果如图 3-3 所示,比较图 3-2 和图 3-3,不难发现结果相同。

图 3-3

系统单位取样响应

3.2.3

离散时间信号的卷积和运算

由于系统的零状态响应是激励与系统的单位取样响应的卷积, 因此卷积运算在离散时间 信号处理领域被广泛应用。离散时间信号的卷积定义为

y ( n) = x ( n) * h( n) =

m = ?∞

∑ x ( m ) h( n ? m )



(3-2)

可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和” 。 MATLAB 求离散时间信号卷积和的命令为 conv,其语句格式为 y=conv(x,h)

其中,x 与 h 表示离散时间信号值的向量;y 为卷积结果,它默认序列从 n=0 开始。但是如 果序列是从一负值开始,即

{ x(n) : nx1 ≤ n ≤ nx2} {h(n) : nh1 ≤ n ≤ nh2}
如 果 nx1<0 或 nh1<0 就 不 能 直 接 采 用 conv 函 数 。 其 卷 积 结 果 序 列 为
{ y (n) : nx1 + nh1 ≤ n ≤ nx 2 + nh2} ,这样就可以构成一个新的卷积函数 conv_m。如下所示:

function[y,ny]=conv_m(x,nx,h,nh) ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h)); ny=[ny1:ny2]; y=conv(x,h) 值得注意的是用 MATLAB 进行卷积和运算时,无法实现无限的累加,只能计算时限信号的 卷积。
n 【 实 例 3-3 】 已 知 某 系 统 的 单 位 取 样 响 应 为 h(n ) = 0.8 [u (n ) ? u (n ? 8)] , 试 用

MATLAB 求当激励信号为 x ( n) = u (n) ? u ( n ? 4) 时,系统的零状态响应。 解:MATLAB 中可通过卷积求解零状态响应,即 x ( n) * h( n) 。由题意可知,描述 h(n) 向量的长度至少为 8, 描述 x (n) 向量的长度至少为 4, 因此为了图形完整美观, 我们将 h(n) 向量和 x (n) 向量加上一些附加的零值。MATLAB 源程序为
nx=-1:5; nh=-2:10; x=uDT(nx)-uDT(nx-4); h=0.8.^nh.*(uDT(nh)-uDT(nh-8)); [y,ny]=conv_m(x,nx,h,nh); subplot(311) stem(nx,x,'fill'),grid on xlabel('n'),title('x(n)') axis([-4 16 0 3]) subplot(312) stem(nh,h','fill'),grid on xlabel('n'),title('h(n)') axis([-4 16 0 3]) subplot(313) stem(ny,y,'fill'),grid on xlabel('n'),title('y(n)=x(n)*h(n)') axis([-4 16 0 3]) %x(n)向量显示范围(添加了附加的零值) %h(n)向量显示范围(添加了附加的零值)

程序运行结果如图 3-5 所示。

图 3-5

利用卷积和法求解系统的零状态响应

3.3
1.

编程练习

试用 MATLAB 命令求解以下离散时间系统的单位取样响应。 (1) 3 y ( n) + 4 y ( n ? 1) + y ( n ? 2) = x ( n) + x ( n ? 1)

2.

5 y (n) + 6 y (n ? 1) + 10 y (n ? 2) = x(n) 2 7 n 已知某系统的单位取样响应为 h(n ) = ( ) [u (n ) ? u (n ? 10 )] , 试用 MATLAB 求当激励 8
(2) 信号为 x ( n) = u ( n) ? u ( n ? 5) 时,系统的零状态响应。

第4章

z 变换及离散时间 LTI 系统的 z 域 分析
4.1 实验目的

学会运用 MATLAB 求离散时间信号的 z 变换和 z 反变换; 学会运用 MATLAB 分析离散时间系统的系统函数的零极点; 学会运用 MATLAB 分析系统函数的零极点分布与其时域特性的关系; 学会运用 MATLAB 进行离散时间系统的频率特性分析。

4.2 4.2.1 z 正反变换

实验原理及实例分析

序列 x (n ) 的 z 变换定义为

X (z ) = Z [x (n )] =

n = ?∞

∑ x (n )z



?n

(4-1)

其中,符号 Z 表示取 z 变换,z 是复变量。相应地,单边 z 变换定义为

X (z ) = Z [x (n )] = ∑ x (n )z ?n
n =0



(4-2)

MATLAB 符号数学工具箱提供了计算离散时间信号单边 z 变换的函数 ztrans 和 z 反变 换函数 iztrans,其语句格式分别为 Z=ztrans(x) x=iztrans(z) 上式中的 x 和 Z 分别为时域表达式和 z 域表达式的符号表示,可通过 sym 函数来定义。 【实例 4-1】 试用 ztrans 函数求下列函数的 z 变换。
n (1) x( n) = a cos(πn)u ( n) ;

(2) x( n) = [ 2 n ?1 ? ( ?2) n ?1 ]u ( n) 。

(1)z 变换 MATLAB 源程序为 解:
>>x=sym('a^n*cos(pi*n)'); >>Z=ztrans(x); >>simplify(Z) ans= z/(z+a) %对 Z 进行简化运算

(2)z 变换 MATLAB 源程序为
>>x=sym('2^(n-1)-(-2)^(n-1)');

>>Z=ztrans(x); >>simplify(Z) ans= z^2/(z-2)/(z+2)

【实例 4-2】 试用 iztrans 函数求下列函数的 z 反变换。

8 z ? 19 (1) X ( z ) = 2 z ? 5z + 6
>>Z=sym('(8*z-19)/(z^2-5*z+6)'); >>x=iztrans(Z); >>simplify(x) ans=

z (2 z 2 ? 11z + 12) (2) X ( z ) = ( z ? 1)( z ? 2) 3

(1)z 反变换 MATLAB 源程序为 解:

-19/6*charfcn[0](n)+5*3^(n-1)+3*2^(n-1)

其中,charfcn[0](n)是 δ (n) 函数在 MATLAB 符号工具箱中的表示,反变换后的函数形式为

x ( n) = ?

19 δ (n) + (5 × 3 n ?1 + 3 × 2 n ?1 )u (n) 。 6

(2)z 反变换 MATLAB 源程序为
>>Z=sym('z*(2*z^2-11*z+12)/(z-1)/(z-2)^3'); >>x=iztrans(Z); >>simplify(x) ans= -3+3*2^n-1/4*2^n*n-1/4*2^n*n^2

其函数形式为 x ( n) = ( ?3 + 3 × 2 ?
n

1 n 1 2 n n 2 ? n 2 )u (n) 。 4 4

如果信号的 z 域表示式 X (z ) 是有理函数,进行 z 反变换的另一个方法是对 X (z ) 进行 部分分式展开,然后求各简单分式的 z 反变换。设 X (z ) 的有理分式表示为

X ( z) =

b0 + b1 z ?1 + b2 z ?2 + ? + bm z ? m B ( z ) = A( z ) 1 + a1 z ?1 + a 2 z ? 2 + ? + a n z ? n

(4-3)

MATLAB 信号处理工具箱提供了一个对 X (z ) 进行部分分式展开的函数 residuez,其语句格 式为 [R,P,K]=residuez(B,A) 其中,B,A 分别表示 X(z)的分子与分母多项式的系数向量;R 为部分分式的系数向量;P 为极点向量;K 为多项式的系数。若 X(z)为有理真分式,则 K 为零。

Y ( z) =


B( z ) r (1) r (2) r(N ) = + + ... + + k (1) + k (2) z ?1 + ... ?1 ?1 A( z ) 1 ? p(1) z 1 ? p (2) z 1 ? p( N ) z ?1
得 出 其 时 域 信 号 为 :



y (n) = r (1)[ p (1)]n u ( n) + r (2)[ p (2)]n u (n) + ... + r ( N )[ p ( N )]n u ( n) + k (1)δ (n) + k (2)δ ( n ? 1) + ...

【实例 4-3】 试用 MATLAB 命令对函数 X ( z ) = 展开,并求出其 z 反变换。 解:MATLAB 源程序为
>>B=[18]; >>A=[18,3,-4,-1]; >>[R,P,K]=residuez(B,A) R= 0.3600 0.2400 0.4000 P= 0.5000 -0.3333 -0.3333 K= []

18 进行部分分式 18 + 3 z ?1 ? 4 z ? 2 ? z ?3

从运行结果可知, p 2 = p3 ,表示系统有一个二重极点。所以,X(z)的部分分式展开为

X ( z) =
因此,其 z 反变换为

0.36 + 0.24 0 .4 + ?1 ?1 1 ? 0 .5 z 1 + 0.3333 z ( 1 + 0.3333 z ?1 ) 2

x(n) = [0.36 × (0.5) n + 0.24 × (?0.3333) n + 0.4(n + 1)(?0.3333) n ]u (n)

4.2.2

系统函数的零极点分析

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

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

Y ( z) X ( z)

(4-4)

H ( z) =

b1 z m + b2 z m?1 + ? + bm z + bm +1 a1 z n + a 2 z n?1 + ? + a n z + a n +1

(4-5)

那么, MATLAB 中系统函数的零极点就可通过函数 roots 得到, 在 也可借助函数 tf2zp 得到。 1, roots 的格式语句为:p=roots(A),其中 A 为待求根的多项式的系数构成的行向量,返回 向量 p 则包含该多项式所有的根位置列向量。 2,tf2zp 的语句格式为

[Z,P,K]=tf2zp(B,A) 其中,B 与 A 分别表示 H (z ) 的分子与分母多项式的系数向量。它的作用是将 H (z ) 的有理 分式表示式转换为零极点增益形式,即

H ( z) = k

( z ? z1 )( z ? z 2 ) ? ( z ? z m ) ( z ? p1 )( z ? p 2 ) ? ( z ? p n )
z + 0.32 z + z + 0.16
2

(4-6)

【实例 4-4】 已知一离散因果 LTI 系统的系统函数为

H ( z) =

试用 MATLAB 命令求该系统的零极点。 解:1,用 roots 函数求系统的零极点: a=[1 0.32]; b=[1 1 0.16]; r=roots(a) r= -0.3200 p=roots(b) p= -0.8000 -0.2000 2,用 tf2zp 函数求系统的零极点,MATLAB 源程序为
>>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.32 ,极点为 p1 = ?0.8 与 p2 = ?0.2 。 若要获得系统函数 H (z ) 的零极点分布图,可直接应用 zplane 函数,其语句格式为 zplane(B,A) 其中,B 与 A 分别表示 H (z ) 的分子和分母多项式的系数向量。值注意的是:求系统函数零 值注意的是: 极点时,离散系统的系统函数可能有两种形式, 极点时,离散系统的系统函数可能有两种形式,一种是分子分母多项式按 z 的降幂次序排
?1 的升幂次序排列。 的降幂次序排列, 列,另一种是按 z 的升幂次序排列。若是以 z 的降幂次序排列,则系数向量一定要由多项

式的最高幂次开始,一直到常数项,缺项要用 补齐; 的升幂次序排列, 式的最高幂次开始,一直到常数项,缺项要用 0 补齐;若以 z 的升幂次序排列,则分子分 母多项式系数向量的维数一定要相同, 补齐,否则零点或极点有可能被漏掉。 母多项式系数向量的维数一定要相同,不足的要用 0 补齐,否则零点或极点有可能被漏掉。 【实例 4-5】 已知一离散因果 LTI 系统的系统函数为

?1

H ( z) =

z 2 ? 0.36 1 ? 0.36 z ?2 = z 2 ? 1.52 z + 0.68 1 ? 1.52 z ?1 + 0.68 z ?2

试用 MATLAB 命令绘出该系统的零极点分布图。 解:用 zplane 函数求系统的零极点,MATLAB 源程序为
>>B=[1,0,-0.36]; >>A=[1,-1.52,0.68]; >>zplane(B,A),grid on >>legend('零点','极点') >>title('零极点分布图')

程序运行结果如图 14-1 所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。

图 4-1

零极点分布图

4.2.3

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

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

z z (2) H 2 ( z ) = z ? 0 .8 z + 0 .8

(3) H 3 ( z ) =

z z ? 1.2 z + 0.72
2

(4) H 4 ( z ) = (7) H 7 ( z ) =

z z ?1
2

(5) H 5 ( z ) =

z z ? 1 .6 z + 1
2

(6) H 6 ( s ) =

z z ? 1 .2

z z ? 2 z + 1.36

解:MATLAB 源程序为
>>b1=[1,0]; >>a1=[1,-0.8]; >>subplot(121) >>zplane(b1,a1) >>title('极点在单位圆内的正实数') >>subplot(122) >>impz(b1,a1,30);grid on; >>figure >>b2=[1,0]; >>a2=[1,0.8]; >>subplot(121) >>zplane(b2,a2) >>title('极点在单位圆内的负实数') >>subplot(122) >>impz(b2,a2,30);grid on; >>figure >>b3=[0,1,0]; >>a3=[1,-1.2,0.72]; >>subplot(121) >>zplane(b3,a3) >>title('极点在单位圆内的共轭复数') >>subplot(122) >>impz(b3,a3,30);grid on; >>figure >>b4=[1,0]; >>a4=[1,-1]; >>subplot(121) >>zplane(b4,a4) >>title('极点在单位圆上为实数 1') >>subplot(122) >>impz(b4,a4);grid on; >>figure >>b5=[0,1,0]; >>a5=[1,-1.6,1]; >>subplot(121) >>zplane(b5,a5) >>title('极点在单位圆上的共轭复数') >>subplot(122) >>impz(b5,a5,30);grid on;

>>figure >>b6=[1,0]; >>a6=[1,-1.2]; >>subplot(121) >>zplane(b6,a6) >>title('极点在单位圆外的正实数') >>subplot(122) >>impz(b6,a6,30);grid on; >>figure >>b7=[0,1,0]; >>a7=[1,-2,1.36]; >>subplot(121) >>zplane(b7,a7) >>title('极点在单位圆外的共轭复数') >>subplot(122) >>impz(b7,a7,30);grid on;

程序运行结果分别如图 14-2 的(a)(b)(c)(d)(e)(f)(g)所示。 、 、 、 、 、 、

(a)

(b)

(c)

(d)

(e)

(f)

(g) 图 4-2 系统函数的零极点分布与其时域特性的关系

从图 14-2 可知,当极点位于单位圆内时, h(n) 为衰减序列;当极点位于单位圆上时,

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

4.2.4

离散时间 LTI 系统的频率特性分析

对于因果稳定的离散时间系统, 如果激励序列为正弦序列 x ( n) = A sin( nω )u ( n) , 则系

统的稳态响应为 y ss ( n) = A | H (e 离散时间系统的频率响应定义为



) | sin[nω + ? (ω )]u (n) 。其中, H (e jω ) 通常是复数。

H (e jω ) =| H (e jω ) | e j? (ω )
其中, | H (e


(14-7)

) | 称为离散时间系统的幅频特性; ? (ω ) 称为离散时间系统的相频特性;
2π ,若零 T = 1 , ω s = 2π )为周期的周期函数。因此,只要分 T

H (e jω ) 是以 ω s ( ω s =

析 H (e jω ) 在 | ω |≤ π 范围内的情况,便可分析出系统的整个频率特性。 MATLAB 提供了求离散时间系统频响特性的函数 freqz,调用 freqz 的格式主要有两种。 一种形式为 [H,w]=freqz(B,A,N) 其中, 与 A 分别表示 H ( z ) 的分子和分母多项式的系数向量, B 值得注意的是, A 采用 z B,
?1

的升次幂形式; 为正整数, N 默认值为 512; 返回值 w 包含 [0, π ] 范围内的 N 个频率等分点; 另一种形式 返回值 H 则是离散时间系统频率响应 H (e jω ) 在 0 ~ π 范围内 N 个频率处的值。 为 [H,w]=freqz(B,A,N,’whole’) 与第一种方式不同之处在于角频率的范围由 [0, π ] 扩展到 [0, 2π ] 。 【实例 4-6】用 MATLAB 命令绘制系统 H ( z ) =

z 2 ? 0.96 z + 0.9028 的频率响应曲线。 z 2 ? 1.56 z + 0.8109

解:利用函数 freqz 计算出 H (e jω ) ,然后利用函数 abs 和 angle 分别求出幅频特性与相 频特性,最后利用 plot 命令绘出曲线。MATLAB 源程序为
>>b=[1 -0.96 0.9028]; >>a=[1 -1.56 0.8109]; >>[H,w]=freqz(b,a,400,'whole'); >>Hm=abs(H); >>Hp=angle(H); >>subplot(211) >>plot(w,Hm),grid on >>xlabel('\omega(rad/s)'),ylabel('Magnitude') >>title('离散系统幅频特性曲线') >>subplot(212) >>plot(w,Hp),grid on >>xlabel('\omega(rad/s)'),ylabel('Phase') >>title('离散系统相频特性曲线')

程序运行结果如图 4-2 所示。

图 4-3

离散系统频响特性曲线

4.3

编程练习
2 z 4 + 16 z 3 + 44 z 2 + 56 z + 32 的部分分 3 z 4 + 3 z 3 ? 15 z 2 + 18 z ? 12

1.

试用 MATLAB 的 residuez 函数, 求出 X ( z ) =

2.

式展开和。 试用 MATLAB 画出下列因果系统的系统函数零极点分布图,并判断系统的稳定性。

2 z 2 ? 1 .6 z ? 0 .9 (1) H ( z ) = 3 z ? 2.5 z 2 + 1.96 z ? 0.48
(2) H ( z ) =

z ?1 z ? 0.9 z ? 0.65 z 2 + 0.873 z
4 3

3.

试用 MATLAB 绘制系统 H ( z ) =

z2 的频率响应曲线。 3 1 2 z ? z+ 4 8


推荐相关:
网站首页 | 网站地图
All rights reserved Powered by 大学生考试网 9299.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com