第5章离散时间系统的时域分析

【本章导读】
从本章开始学习离散时间系统的分析。学习离散时间系统分析时要注意与前面所学的连续时间系统分析进行对比分析,找出相同点与不同点,并加以分析,可以大大提高学习效率。本章主要讲解离散时间信号的概念和基本运算, 以及离散时间系统的数学模型及时域分析。
【学习要点】
(1) 掌握离散信号的基本描述方法及基本运算。
(2) 掌握离散系统线性时不变、因果、稳定等概念。
(3) 掌握离散时间系统的差分方程描述。
(4) 掌握系统的单位样值响应的定义。
(5) 掌握卷积和的概念及计算。
5.1引言
在前面几章的讨论中,所涉及的系统均属于连续时间系统,这类系统用于传输和处理连续时间信号。此外还有一类用于传输处理离散时间信号的系统称为离散时间系统,简称离散系统。一个离散时间信号可以表示一个其自变量变化本来就是离散的现象,例如人口统计学中的一些数据以及股票市场指数,通常,这里产生的各种数据流不一定与连续信号有某种依从关系; 另一方面,有些很重要的离散时间信号则是通过对连续时间信号的抽样而得到的,这时该离散时间信号代表一个连续时间信号在相继的离散时刻点上的样本值。因此,不能简单地把离散时间信号狭隘地理解为连续信号的抽样或近似。
离散时间系统的研究源远流长。17世纪发展起来的经典数值分析技术奠定了这方面的数值基础。20世纪四五十年代,抽样数据控制系统的研究取得了重大进展。20世纪60年代以后,计算机科学的进一步发展与应用标志着离散时间系统的理论研究和实践进入了一个新阶段。1965年,库利(J.W.Cooley)与图基(J.W.Tukey)在前人工作的基础上发表了计算傅里叶变换高效算法的文章,这种算法称为快速傅里叶变换,缩写为FFT。FFT算法的出现引起了人们的极大兴趣,迅速得到了广泛应用。与此同时,超大规模集成电路研制的进展使得体积小、重量轻、成本低的离散时间系统有可能实现。在信号与系统分析的研究中,人们开始以一种新的观点——数字信号处理——来认识和分析各种问题。
20世纪末期,数字信号处理技术迅猛发展,应用日益广泛,例如在通信、雷达、控制、航空与航天、遥感、声呐、生物学、地震学、核物理学、微电子学等诸多领域已卓见成效。随着应用技术的发展,离散时间信号与系统自身的理论体系逐步形成,并日趋丰富和完善。
离散时间系统的分析方法和连续时间系统的分析方法是互相平行的,它们有许多类似之处。连续时间系统可以用微分方程来描述,离散时间系统则可以用差分方程来描述。差分方程与微分方程的求解方法在相当大的程度上相互对应。在连续时间系统中,卷积方法的研究与应用有着极其重要的意义; 相应地,在离散时间系统的研究中,卷积和(简称卷积)的方法具有同样重要的地位。在连续时间系统中,广泛地应用拉普拉斯变换与傅里叶变换等变换域方法进行分析,并运用系统函数的概念来处理各种问题; 在离散时间系统中也同样广泛采用变换域方法(如z变换、离散傅里叶变换及其他多种离散正交变换)和系统函数的概念来分析解决问题。当然连续时间系统和离散时间系统在数学模型的建立与求解、系统性能分析以及系统实现原理等方面存在着重要的差异。正是由于差异的存在,才使得离散时间系统有可能表现出某些独特的性能。
从本章开始介绍离散时间系统的基本概念和基本分析方法,仍然是从时间域到变换域。重点介绍离散时间系统的时域分析及z域分析。关于离散傅里叶变换等一些知识则留到后续课程数字信号处理中再详细介绍。
5.2离散时间信号——序列
5.2.1离散信号的定义

在第1章中曾定义,表示离散信号的时间函数,只在某些离散瞬时给出函数值。因此,它是在时间上不连续的一系列数,称之为序列。通常以{x(n)}表示此离散时间信号,这里,n取整数(n=0,±1,±2,…),可以理解为各函数值在信号中出现的顺序。为书写方便,以x(n)表示序列,不再加注外面的括号。x(n)可写成一般闭式的表达式(解析表达式),也可逐个列出x(n)值。通常,把对应某序号n的函数值称为在第n个样点的样值。
离散时间信号也常用图解(即波形)表示,线段的长度代表各序列值的大小,有时,可将它们的端点连接起来。例如,图51示出了某序列x(n)的波形。在这里必须认识到,x(n)仅对n的整数值才有定义,对于n的非整数值,虽然图51中给出了连续的虚线,但在这些点上定义x(n)是没有意义的。


图51离散时间信号的图形



5.2.2离散时间信号的运算
与连续时间系统的研究类似,在离散系统分析中,经常遇到离散时间信号的运算,包括两信号的相加、相乘以及序列自身的位移、反褶、尺度变换以及差分、累加等。
序列x(n)与y(n)相加是指两序列对应同序号的数值逐项相加再按原顺序构成一个新序列z(n) 

z(n)=x(n)+y(n)(51)

类似地,二者相乘表示对应同序号样值逐项相乘构成一个新的序列z(n)

z(n)=x(n)y(n) (52)

序列延时x(n-m)是指序列x(n)逐项依次右移(后移)m位后给出一个新序列

z(n)=x(n-m)(53)

若向左移位(向前移位),其表达式为

z(n)=x(n+m)(54)

序列的反褶表示将自变量n更换为-n,表达式为

z(n)=x(-n)(55)

序列的尺度变换将波形压缩或扩展。这时自变量乘以整数a,构成x(an)为压缩,而xn/a则为波形扩展。必须注意,和连续时间系统的信号运算不同,考虑到离散时间信号只能在整数n上取值,这时要按规律去除某些点(原来n为整数,但是经过压缩后,变为非整数)或补足相应的零值(原来在这些点上没有取值,但是经过波形扩展,信号包含了这些点,必须补0)。因此,也称这种运算为序列的重排。
【例51】若x(n)波形如图52(a)所示,求x(3n)和x(n/3)的波形。


图52例51波形



解: x(3n)波形如图52(b)所示,这时,对应x(n)序列中n为1、2、4、5的样值已不存在,只留下x(n)序列中n为3、6所对应的样值,波形压缩。而x(n/3)波形如图52(c)所示,对于x(n/3)的n为非3的整数倍的各点对应补入零值,n为3的整数倍的各点取得x(n)波形中依次对应的样值,因而波形扩展。

与连续时间信号的微分、积分运算相对应,离散时间信号分析过程中往往需要进行差分和累加运算。差分运算是指相邻两样值相减,其中,前向差分以符号Δx(n)表示

Δx(n)=x(n+1)-x(n)(56)

而后向差分x(n)表达式为

x(n)=x(n)-x(n-1)(57)

累加运算的结果表示为

z(n)=∑nk=-∞x(k)(58)

注意对于给定的信号x(k),若式中序列是收敛的,当指定n值后z(n)为确定的数值。
此外,有时需要论及序列的能量,序列x(n)的能量定义为

E=∑+∞n=-∞|x(n)|2(59)

5.2.3常用典型序列
和连续时间系统一样,介绍一些常用的典型序列。
1. 单位样值信号(Unit Sample或Unit Impulse)

δ(n)=1,n=0

0,n≠0(510)

此序列只在n=0处取单位值1,其余样点上都为零,如图53所示。单位样值信号也称为单位抽样、单位函数、单位脉冲或单位冲激。它在离散时间系统中的作用,类似于连续时间系统中的单位冲激函数δ(t)。但是,应注意它们之间的重要区别,δ(t)可以理解为在t=0点脉宽趋于零,幅度为无限大的信号; 而δ(n)在n=0点取有限值,其值等于1。


图53单位样值信号



2. 单位阶跃序列(Unit Step Sequences)

u(n)=1,n≥0

0,n<0 (511)


它的图形如图54所示,类似于连续时间系统中的单位阶跃信号u(t)。但应注意u(t)在t=0点发生跳变,往往不予定义或定义为12,而u(n)在n=0点明确规定为u(0)=1。


图54单位阶跃信号


3. 矩形序列

RN(n)=1,0≤n≤N-1

0,n<0,n≥N(512) 

它从n=0开始,到n=N-1,共有N个幅度为1的数值,其余各点皆为零(见图55)。类似于连续时间系统中的矩形脉冲。显然,矩形序列RN(n-m)取值为1的范围从n=m到n=m+N-1。


图55矩形序列



以上三种序列之间有如下关系: 

u(n)=∑+∞k=0δ(n-k)(513)

δ(n)=u(n)-u(n-1)(514)

RN(n)=u(n)-u(n-N)(515)

4. 斜变序列

x(n)=nu(n)(516)

见图56,它与连续时间系统中斜变函数f(t)=t相像。


图56nu(n)序列



5. 指数序列

x(n)=anu(n)(517)

指数序列的图形随a的取值不同有4种情况,如图57所示,当|a|>1时序列是发散的; |a|<1时序列收敛; a>0时序列都取正值; a<0时序列在正、负值间摆动。此外,还可能遇到a-nu(n)序列,其图形请读者练习画出。



图57指数序列



最后简要说明离散时间信号的分解。一种常用的分解方法是将任意序列表示为加权、延迟的单位样值信号之和。
由于


δ(n-m)=1,m=n


0,m≠n(518)

x(m)δ(n-m)=x(n),m=n


0,m≠n(519)


所以

x(n)=∑+∞m=-∞x(m)δ(n-m) 

即将任意序列表示为加权、延迟的单位样值信号之和。这是一种常用的分解方法,
在第5.6节将运用这一概念引入卷积和。
5.3离散时间系统的数学模型
5.3.1线性时不变系统

一个离散时间系统,其激励信号x(n)是一个序列,响应y(n)为另一序列,如图58所示。显然,此系统的功能是完成x(n)转变为y(n)的运算。



图58离散时间系统



类似于连续时间系统,按离散时间系统的性能,可以划分为线性、非线性、时不变、时变等各种类型。目前,最常用的、最简单的是线性时不变系统。本书的讨论范围也限于此。
在第1章里曾给出线性时不变系统的基本性能,这里不再详细讨论,只是针对离散时间系统的特点再作一些说明。
线性离散时间系统应满足均匀性与叠加性。均匀性与叠加性的意义是: 对于给定的离散时间系统,若x1(n),y1(n)和x2(n),y2(n)分别代表两对激励与响应,则当激励序列式c1x1(n)+c2x2(n)时(c1,c2分别为常数),系统的响应为c1y1(n)+c2y2(n)。此特性示意如图59所示。


图59线性系统的均匀性与叠加性


对于时不变系统(或称移不变系统),在同样起始状态之下系统响应与激励施加于系统的时刻无关。若激励为x(n)时产生响应y(n),则当激励为xn-N时产生响应yn-N。此特性示于图510,它表明,若激励位移N,响应也延迟N。


图510时不变系统特性


5.3.2离散时间系统的表示
在连续时间系统中,信号是时间变量的连续函数,系统可用微积分方程式描述。对于离散时间系统,信号的变量n是离散的整型值,因此,系统的行为和性能需用差分方程来表示。
微积分方程由连续自变量的函数f(t)以及各阶导数ddtf(t),d2dt2f(t),或积分等项线性叠加组成。在差分方程中,构成方程式的各项包含有离散变量的函数x(n),以及x(n)的序数增加或减少的移位函数xn+1,xn+2,…,xn-1,xn-2等。
在连续时间系统中,系统内部的数学运算关系可归结为微分(或积分)、乘系数、相加。与此对应,在离散时间系统中,基本运算关系是延时(移位)、乘系数、相加。
离散系统的基本运算器包括延时器、加法器和标量乘法器。加法器和标量乘法器的功能、符号和作用与连续系统相同,延时器则与积分器相对应,它实际上是一个存储器,作用是存储一个取样时间的信号D,电路上常采用延时线或移位寄存器。延时器的时域表示和z域标示符号如图511所示。


图511延时器


下面以实例说明如何为一个离散时间系统建立描述该系统的数学模型——差分方程。
【例52】某系统框图如图512所示,写出其差分方程。


图512例52系统框图


解: 围绕图512(a)中的相加器可以写出

y(n)=x(n)+ay(n-1)

该方程称为常系数线性差分方程(Difference Equation),或称递归关系式(Recurrence Relation)。一般情况下,等式左端由未知序列y(n)及其位移序列y(n-1)等构成,等式右端是已知的激励序列及其位移序列,如x(n),x(n-1)构成,式中a是常数。如果给定x(n),而且知道y(n)的边界条件,解此差分方程即可求得响应序列y(n)。一般情况下差分方程式的阶数等于未知序列变量序号的最高与最低值之差。
根据图512(a)写出的差分方程,各未知序列的序号自n以递减方式给出,称为后向形式的(或向右移序的)差分方程。也可从n以递增方式给出,即y(n)+y(n+1)+y(n+2)+…+y(n+N)等项组成,称为前向形式的(向左移序的)差分方程,如图512(b)所示。
图512(b)中,延时器的输入端应为序列y(n+1)。围绕相加器可以写出

y(n+1)=x(n)+ay(n)(520)


或
y(n)=1a[y(n+1)-x(n)]

现在来讨论如何运用延时器、加法器和标量乘法器对离散时间系统进行模拟。
设描述一阶离散时间系统的差分方程为

y(n+1)+a0y(n)=x(n)(521)

可改写为
y(n+1)=-a0y(n)+x(n)
由此式很容易画出一阶离散时间系统的模拟图,如图513所示。



图513一阶离散时间系统的模拟图



对于二阶离散时间系统,若差分方程为

y(n+2)+a1y(n+1)+a0y(n)=x(n)(522) 

可改写为

y(n+2)=-a1y(n+1)-a0y(n)+x(n)

然后采用图514来模拟。可以看出,离散时间系统的模拟图与连续时间系统的模拟图具有相同的结构,只是前者用延时器,后者用积分器。


图514二阶离散时间系统的模拟图


对于一般的二阶离散时间系统,若方程为

y(n+2)+a1y(n+1)+a0y(n)=b1x(n+1)+b0x(n) (523)

则与连续时间系统的模拟一样,引入辅助函数q(n),使

q(n+2)+a1q(n+1)+a0q(n)=x(n)(524)

相应有

y(n)=b1q(n+1)+b0q(n)(525)

这样,式(523)就可以用式(524)和式(525)来等效,分别画出对应式(524)和式(525)的模拟图,就可以得到差分方程所描述的系统模拟图,如图515所示。


图515一般二阶离散时间系统的模拟图


上述结论可以推广到n阶离散时间系统的模拟。
【例53】某离散系统如图516所示,试写出其差分方程。


图516例53题图


解: 图516中,所有的信号都可以用输入或输出表示,图516中a点信号为y(n+1),c点信号为y(n-1)。
对于求和器列写方程,得


y(n+1)=x(n)+3y(n)-2y(n-1)


整理,得


y(n+1)-3y(n)+2y(n-1)=x(n)


【例54】已知某离散时间系统的差分方程为

y(n)-7y(n-1)+y(n-2)=x(n)-x(n-1)

试画出其模拟图。
解: 已知差分方程中包含x(n)的移序项,可以引入辅助函数构建模拟图,此方法略。由系统的差分方程画系统模拟图的方法很多,得到的模拟图也不是唯一的。如将差分方程改写为

y(n)=7y(n-1)-y(n-2)+x(n)-x(n-1)

可得如图517所示的模拟图。需要注意的是,模拟图中的激励必须是x(n),响应必须是y(n)。


图517例54题图


5.4常系数线性差分方程的求解
常系数线性差分方程的一般形式可表示为

a0y(n)+a1y(n-1)+…+aN-1y(n-N+1)+aNy(n-N)

=b0x(n-1)+b1x(n-1)+…+bM-1x(n-M+1)+bMx(n-M)(526)

式中,a和b是常数,输入信号x(n)的位移阶次是M,输出信号y(n)的位移阶次即表示此差分方程的阶次M。利用求和符号可将式(526)缩写为

∑Nk=0aky(n-k)=∑Mr=0brx(n-r)(527)

求解常系数线性差分方程的方法一般有以下几种。
1. 迭代法
迭代法包括手算逐次代入求解或利用计算机求解。这种方法概念清楚,也比较简便,但只能得到其数值解,不能直接给出一个完整的解析式作为解答(也称闭式解答)。
为了进一步认识差分方程中各变量之间的约束关系,以图512(a)的问题为例,说明此系统在激励信号x(n)作用下的工作过程,并用迭代方法找出差分方程的解答。
为了使序列x(n)的数据流依次进入系统并完成运算,系统内部设置有三个寄存器,一个存放x(n),第二个存放y(n),另一个存放系数a。当a与y(n-1)相乘之运算取得以后,存放x(n)的寄存器给出x(n)的一个样值,并与ay(n-1)相加,相加得到的y(n)值再存入y(n)寄存器中,这样就完成了依次迭代,为下一个输入样值的进入做好了准备。
每一个新的输入样值进入之前(也即每一次迭代开始之前),系统的状态完全取决于y(n)寄存器中的数值。假定在n=0时刻,输入x(n)的样值x(0)进入,那么,y(n)寄存器的起始值为y(n-1)。
于是,可以求得

y(0)=ay(-1)+x(0)

把y(0)作为下一次迭代的起始值依次给出

y(1)=ay(0)+x(1)

y(2)=ay(1)+x(2)

︙

由上述分析可知,可以用迭代的方法求解差分方程,例如对于例52的方程式(520),若已知x(n)=δ(n),y(n-1)=0,容易求得

y(0)=ay(-1)+1=1

y(1)=ay(0)+0=a

y(2)=ay(1)+0=a2

︙

y(n)=ay(n-1)+0=an

此范围限于n≥0,因此,应将y(n)写作

y(n)=anu(n)

用迭代法解差分方程是一种原始的方法,不易直接给出一个解析解,关于差分方程的一般求解方法将在本节(用时域法)以及下一章(用变换域法)详细讨论。在那里还将看到,在某些情况下,迭代的方法还是一种可取的方法。
2. 时域经典法
与微分方程的时域经典法类似,差分方程的时域经典法也是先分别求齐次解与特解,然后代入边界条件求待定系数。这种方法便于从物理概念说明各响应分量之间的关系,但求解过程比较麻烦,在解决具体问题时不宜采用。
3. 分别求零输入响应与零状态响应
可以利用求齐次解的方法得到零输入响应,利用卷积和的方法求零状态响应。与连续时间系统的情况类似,卷积方法在离散时间系统分析中同样占有十分重要的地位。
4. 变换域方法
类似于连续时间系统分析中的拉普拉斯变换方法,利用变换方法解差分方程有许多优点,这是实际应用中简便而有效的方法。
本章着重介绍时域中求齐次解的方法和卷积法,下一章详细研究变换方法。
一般差分方程对应的齐次方程的形式为

∑Nk=0αky(n-k)=0 (528)

所谓差分方程的齐次解应满足式(528)。首先分析最简单的情况,若一阶齐次差分方程的表示式为

y(n)-αy(n-1)=0(529)

可以改写为

α=y(n)y(n-1)

这里,y(n)与y(n-1)之比为α,这意味着序列y(n)是一个公比为α的等比序列,有如下形式

y(n)=Cαn

其中,C是待定系数,由边界条件决定。
一般情况下,对于任意阶的差分方程,它们的齐次解的形式为对应于不同特征根α的Cαn的项组合而成。
在特征根没有重根的情况下,差分方程的齐次解为

C1αn1+C2αn2+…+CNαnN(530)

这里,C1,C2,…,CN是由边界条件决定的系数。现在举例说明求齐次解的过程。
【例55】对于差分方程

y(n)+4y(n-1)+3y(n-2)=0

已知y(1)=1,y(2)=3。试求解方程。
解: 
它的特征方程为

α2+4α+3=0

求得特征根为

α1=-1,α2=-3

于是写出齐次解为

y(n)=C1(-1)n+C2(-3)n

将y(1)=1,y(2)=3分别代入,得到一组联立方程式

1=-C1-3C2
3=C1+9C2

由此求得系数C1,C2分别为 

C1=-3,C2=23

最后,写出y(n)的解答

y(n)=-3×(-1)n+23×(-3)n

在有重根的情况下,齐次解的形式将略有不同。假定α1是特征方程的k重根,那么,在齐次解中,相应于α1的部分将有k项

C1nk-1αn1+C2nk-2αn1+…+Ck-1nαn1x+Ckαn1(531)

【例56】求差分方程

y(n)+9y(n-1)+27y(n-2)+27y(n-3)=x(n)

的齐次解。
解: 特征方程为

α3+9α2+27α+27=0

即

(α+3)3=0

可见,-3是此方程的三重特征跟,于是求得齐次解为

(C1n2+C2n+C3)(-3)n

当特征根为共轭复数时,齐次解的形式可以是等幅、增幅或衰减等形式的正弦(余弦)序列,在此不做详细讨论,可以参看参考文献。
下面讨论求特解的方法。为求得特解,首先将激励函数x(n)代入方程式右端(也称自由项),观察自由项的函数形式来选择含有待定系数的特解函数式,将此特解函数代入方程后再求待定系数。为了说明特解的求解方法,现举一个求解非齐次差分方程的例子。在此例中,包括求齐次解,求特解,最后得出完全响应。
【例57】求下列差分方程的完全
解


y(n)+2y(n-1)=x(n)


其中激励函数x(n)=5u(n),且已知y(-1)=1。
解:
(1) 首先,求得它的齐次解为C(-2)n。
(2) 将激励信号x(n)=5u(n)代入方程右端,得到自由项为5u(n)。n≥0时激励序列的样值全为5(常数)。根据此函数形式,选择具有常数形式(y(n)=D)的特解,其中D为待定系数,以此作y(n)代入方程给出 

D+2D=5,n≥0

比较方程两端系数,解得

D=53

完全解的表达式为

y(n)=C(-2)n+53

(3) 代入边界条件y(-1)=1,迭代出

n=0y(0)=5-2y(-1)=3

代入完全解y(n)=C(-2)n+53,得

y(0)=3=C+53

所以
C=43

最后,写出完全响应的表示式为

y(n)=43(-2)n+53,n≥0

以上所得结果与连续时间系统微分方程各响应分量的求解规律十分相似,读者可自行比较。
还需指出,差分方程的边界条件不一定由y(0),y(1),…,y(N-1)这一组数字给出。对于因果系统,常给定y(-1),y(-2),…,y(-N)为边界条件,由于激励信号是在n=0时接入系统的,所以必须先迭代出y(0),y(1),…,y(N-1)的值,用这些值作为边界条件求出完全解的待定系数(这一点有点类似于连续时间系统的时域分析中0-条件和0+条件的区别)。同理,对于因果系统中的所谓零状态是指y(-1),y(-2),…,y(-N)都等于零(N阶系统),而不是指y(0),y(1),…,y(N)为零。下面用一个例子来说明离散时间系统零输入响应和零状态响应的求解方法。
【例58】已知系统的差分方程为

y(n)-0.9y(n-1)=0.1u(n)

(1) 若边界条件y(-1)=0,求系统的完全响应; 
(2) 若边界条件y(-1)=1,求系统的完全响应。
解:
(1) 由于激励在n=0接入,且给定y(-1)=0,因此,起始时系统处于零状态,即只要求出系统的零状态响应即可。由y(-1)利用迭代法可求出y(0)=0.1。
由特征方程求得齐次解为C(0.9)n,而特解是D,完全解的形式应为

y(n)=C(0.9)n+D

为确定系数D,将特解代入方程得到 

D(1-0.9)=0.1

D=1

再将y(0)代入y(n)表示式求系数C: 

0.1=y(0)=C+D

C=0.1-1=-0.9

最后,写出完全响应为

y(n)=[-0.9×(0.9)n自由响应+1]u(n)强迫响应

波形如图518所示。


图518例58(1)的响应波形


(2) 先求零状态响应,令y(-1)=0,此即第(1)问之结果,可以写出

零状态响应=1-0.9×(0.9)n

再求零输入响应,令激励信号等于零,差分方程表示为

y(n)-0.9y(n-1)=0

它的特征方程为 

α-0.9=0

求得特征根为

α=0.9

于是,



零输入响应=Czi×(0.9)n
以y(-1)=1代入,即


1=Czi×(0.9)-1


求得系数

Czi=0.9

于是有

零输入响应=0.9×(0.9)n

将以上两部分结果叠加,得到完全响应y(n)表示式

y(n)=1-0.9×(0.9)n零状态响应+0.9×(0.9)n零输入响应=u(n)

y(n)的波形见图519。


图519例58(2)的响应波形


5.5离散时间系统的单位样值响应(单位冲激响应)
在连续时间系统中,单位冲激δ(t)作用于系统引起的响应h(t),在离散线性系统中,则单位样值序列δ(n)作为激励而产生的系统零状态响应h(n)——单位样值响应。这不仅是由于这种激励信号具有典型性,而且也是为求卷积和做准备。
由于δ(n)信号只在n=0时取值δ(0)=1,在n为其他值时都为零,利用这一特点可以较方便地以迭代法依次求出h(0),h(1),…,h(n)。
【例59】已知离散时间系统的差分方程如下

y(n)-2y(n-1)=x(n)

试求其单位样值响应h(n)。
解: 对于因果系统,由于n<0时,x(n)均为0,故h(-1)=0,以此起始条件代入差分方程可得

h(0)=2h(-1)+δ(0)=0+1=1

依次代入求得 

h(1)=2h(0)+δ(1)=2+0=2
h(2)=2h(1)+δ(2)=4+0=4
︙
h(n)=2h(n-1)+δ(n)=2n

此系统的单位样值响应是

h(n)=2n,n≥0

0,n<0

用这种迭代方法求系统的单位样值响应还不能直接得到h(n)的数值表达式。为了能够给出数值表达式,可把激励信号δ(n)等效为起始条件,这样就把问题转化为求解齐次方程,由此得到h(n)的数字表达式。下面的例子说明这种方法。
【例510】系统差分方程式为

y(n)-6y(n-1)+12y(n-2)-8y(n-3)=x(n)

求系统的单位样值响应。
解: 
(1) 求差分方程的齐次解(即系统的零输入响应)。写出特征方程

α3-6α2+12α-8=0

解得特征根α1=α2=α3=2,即2为三重根。于是可知,齐次解的表示式为

(C1n2+C2n+C3)×2n

(2) 因为起始时系统是静止的,容易推知h(-2)=h(-1)=0,h(0)=δ(0)=1。以h(0)=1,h(-1)=0,h(-2)=0作为边界条件建立一组方程式求系数C

1=C3
0=(C1-C2+C3)×12
0=(4C1-2C2+C3)×14

解得 

C1=12,C2=32,C3=1

(3) 系统的单位样值响应为

h(n)=12(n2+3n+2)×2n,n≥0
0,n<0 

此例中单位样值响应的激励作用等效为一个起始条件h(0)=1,因而,求单位样值响应的问题转化为求系统的零输入响应,很方便地得到h(n)的闭式解。
在连续时间系统中曾利用系统函数H(s)求拉普拉斯逆变换的方法来确定冲激响应h(t),与此类似,在离散时间系统中,也可利用系统函数H(z)求z逆变换来确定单位样值响应,一般情况下,这是一种比较简便的方法,将在第6章详述。
由于单位样值响应h(n)表征了系统自身的性能,因此,在时域分析中可以根据h(n)来判断系统的某些重要性能,如因果性、稳定性,以此区分因果系统与非因果系统,稳定系统与非稳定系统。
1. 因果系统
所谓因果系统,就是输出变化不领先于输入变化的系统。响应h(n)只取决于当前时刻,以及当前时刻以前的激励,即x(n),x(n-1),x(n-2),…。如果y(n)不仅取决于当前及过去的输入,而且还取决于未来的输入x(n+1),x(n+2),…,那么,在时间上就违背了先因后果的逻辑关系,因而是非因果系统,也即不可实现的系统。
离散线性时不变系统作为因果系统的充分必要条件是

h(n)=0,n<0(532)

或表示为

h(n)=h(n)u(n)(533)

一种非因果的平滑系统数学模型可表示为

y(n)=12M+1∑Mk=-Mx(n-k) (534)

对于待处理的数据x(n),可用n点附近±M取点处的数据做算术平均计算,即取和后再除以(2M+1),由此获得平滑后的数据y(n),见图520。显然,这是一个非因果系统。


图520将x(n)做平滑处理得到y(n) 


2. 稳定系统
稳定系统的定义为: 若输入是有界的,输出必定也是有界的系统(BIBO系统)。对于离散时间系统,稳定系统的充分必要条件是单位样值(单位冲激)响应绝对可和。即

∑+∞n=-∞|h(n)|≤M(535)

式中M为有界正值。
既满足稳定条件又满足因果条件的系统是本书的主要研究对象,这种系统的单位样值响应h(n)是单边的而且是有界的。

h(n)=h(n)u(n)
∑+∞n=-∞|h(n)|≤M (536)

下面考虑一个简单的例子,若系统的单位样值响应h(n)=αnu(n),则容易判断它是因果系统,因为当n<0时h(n)=0。稳定性与否与α的数值有关,若|α|<1,则几何级数∑+∞n=0|α|n收敛为11-α,系统是稳定的; 若|α|>1,则该几何级数发散,系统是非稳定的。
5.6卷积(卷积和)
在连续时间系统中,可以把激励信号分解为冲激函数序列,令每一冲激函数单独作用于系统求其冲激响应,最后把这些响应叠加即可得到系统对此激励信号的零状态响应。这个叠加的过程表现为求卷积积分。在离散时间系统中,也可以采用大体相同的方法进行分析,由于离散信号本身就是一个不连续的序列,因此,激励信号分解为脉冲序列的工作就很容易完成,对应每个样值激励,系统得到对应的样值响应,每一个响应也是一个离散时间序列,把这些序列叠加即得零状态响应,叠加过程表现为求“卷积和”。
由式(518)可知,离散时间系统的任意激励信号x(n)可以表示为单位样值加权取和的形式

x(n)=∑+∞m=-∞x(m)δ(n-m)

设线性时不变系统对单位样值δ(n)的响应为h(n),由时不变系统特性可知,对于δ(n-m)的延时响应就是h(n-m); 再由线性系统的均匀性可知,对于x(m)δ(n-m)序列的响应是x(m)h(n-m),最后根据叠加性得到系统对于∑x(m)δ(n-m)序列总的响应为

y(n)=∑+∞m=-∞x(m)h(n-m)(537)

式(537)称为“卷积和”(或仍称为卷积)。它表征了系统响应y(n)与激励x(n)和单位样值响应h(n)之间的关系,y(n)是x(n)与h(n)的卷积,用简化符号记为

y(n)=x(n)h(n) (538)

对于式(537)进行变量置换得到卷积的另一种表示式

y(n)=∑+∞m=-∞h(m)x(n-m)=h(n)x(n)(539)

这表明,两序列进行卷积的次序是无关紧要的,可以互换。容易证明,卷积和的代数运算与连续系统中卷积的代数运算规律相似,都服从交换律、分配律、结合律。
在连续时间系统中,δ(t)与f(t)的卷积仍等于f(t),类似地,在离散时间系统中也有

δ(n)x(n)=x(n) (540)

卷积和的图形解释可以把卷积和的过程分解为反褶、平移、相乘、取和4个步骤,在下面的例子中可以看到。

【例511】某系统的单位样值响应是

h(n)=anu(n)

其中0<a<1。若激励信号为

x(n)=u(n)-u(n-N)

试求响应y(n)。
解: 由式(537)可知

y(n)=∑+∞m=-∞x(m)h(n-m)

=∑+∞m=-∞[u(m)-u(m-N)]an-mu(n-m)



图521例511中计算卷积和有关的序列


图521中给出了x(n)、h(n)序列图形。为求卷积和,同时绘出x(m)以及对应某几个值的h(n-m)。由图521看出,在n<0的条件下,h(n-m)与x(m)相乘,处处都为零值,因此当n<0时,y(n)=0。而0≤n≤N-1时,从m=0到m=n的范围内h(n-m)与x(m)有交叠相乘而得的非零值,得到

y(n)=∑nm=0an-m=an∑nm=0a-m=an1-a-(n+1)1-a-1(0≤n≤N-1)



对于N-1≤n,交叠相乘的非零值从m=0延伸到m=N-1,因此

y(n)=∑N-1m=0an-m=an∑N-1m=0a-m=an1-a-N1-a-1(N-1≤n)

图522给出了响应y(n)。



图522例511中求得的卷积和y(n)


【例512】已知

x1(n)=δ(n)+3δ(n-1)+2δ(n-2)+3δ(n-3)

x2(n)=2δ(n)+δ(n-1)+4δ(n-2)

求卷积。
解: 
(1) 方法一。
注意到本例给出的离散信号未能以闭式表示,为书写方便也可将它们写作序列

{x1(n)}={1323}

 ↑

{x2(n)}={214}

 ↑

利用一种“对位相乘求和”的方法可以较快地求出卷积结果。为此,将两序列样值以各自n的最高值按右端对齐,如下排列





然后逐个样值对应相乘但不要进位,最后把同一列上的乘积值按对位求和即可得到

{y(n)}={2711201112}

↑

不难发现,这种方法实质上是将作图过程的反褶与移位两步骤以对位排列方式巧妙地取代,读者可自行对此例用作图法求解,将两种方法进行对比。显然,这里的“对位相乘求和”解法比较便捷。
(2) 方法二。在离散系统中卷积的代数运算与连续系统中卷积的代数运算规律相似,都服从交换律、分配律、结合律。且有

δ(n)*x(n)=x(n)

所以

x1(n)*x2(n)

=[δ(n)+3δ(n-1)+2δ(n-2)+3δ(n-3)]*[2δ(n)+δ(n-1)+4δ(n-2)]

=[δ(n)*2δ(n)+δ(n)*δ(n-1)+δ(n)*4δ(n-2)

+3δ(n-1)*2δ(n)+3δ(n-1)*δ(n-1)+3δ(n-1)*4δ(n-2)

+2δ(n-2)*2δ(n)+2δ(n-2)*δ(n-1)+2δ(n-2)*4δ(n-2)

+3δ(n-3)*2δ(n)+3δ(n-3)*δ(n-1)+3δ(n-3)*4δ(n-2)]

=2δ(n)+δ(n-1)+4δ(n-2)

+6δ(n-1)+3δ(n-2)+12δ(n-3)

+4δ(n-2)+2δ(n-3)+8δ(n-4)

+6δ(n-3)+3δ(n-4)+12δ(n-5)

=2δ(n)+7δ(n-1)+11δ(n-2)+20δ(n-3)+11δ(n-4)+12δ(n-5)

以上两例着重说明了求卷积和的原理和基本计算方法,希望读者根据习题多加练习。

5.7离散时间系统时域分析的MATLAB实现
线性时不变离散时间系统是最基本的数字系统,差分方程和系统函数是描述系统的常用数学模型,单位样值响应和频率响应是描述系统特性的主要特征参数,零状态响应和因果稳定性是系统分析的重要内容。MATLAB为线性时不变系统的差分方程提供了专用函数filter,该函数可以计算对于指定时间范围的激励序列的响应,并提供了求两个有限时间区间非零的离散时间序列卷积和的专用函数conv。
【例513】已知描述离散系统的差分方程为 


y(n)-0.25y(n-1)+0.5y(n-2)=f(n)+f(n-1) 


且已知系统输入序列为f(n)=12nu(n)。
(1) 求出系统的单位函数响应h(n)在-3~10离散时间范围内响应波形。
(2) 求出系统零状态响应在0~15区间上的样值,并画出输入序列的时域波形以及系统零状态响应的波形。
解: 
[MATLAB程序]
系统的单位函数响应: 

a=[1,-0.25,0.5];

b=[1,1,0];

impz(b,a,-3:10),title('单位响应')       %绘出单位函数响应在-3~10区间上的波形

零状态响应:

a=[1,-0.25,0.5];b=[1,1,0]  

k=0:15;                              %定义输入序列取值范围

x=(1/2).^k;                           %定义输入序列表达式     

y=filter(b,a,x)                         %求解零状态响应样值

subplot(2,1,1),stem(k,x)                 %绘制输入序列的波形  

title('输入序列')

subplot(2,1,2),stem(k,y)                 %绘制零状态响应的波形

title('输出序列')  

[程序运行结果]

b =

110

y =

Columns 1 through 8

1.00001.75000.6875-0.3281-0.23830.19820.2156-0.0218

Columns 9 through 16

-0.1015-0.00860.05150.0187-0.0204-0.01410.00690.0088


运行得到结果如图523和图524所示。


图523单位函数响应运行结果





图524零状态响应运行结果



【例514】序列f1(n),f2(n)的卷积和运算f(n)=f1(n)f2(n),可由MATLAB的conv()函数实现,调用格式为 

f=conv(f1,f2)

解: 
如已知序列: f1(n)=1,-2≤n≤2
0,其他,f2(n)=2n,0≤n≤3
0,其他,运行如下M文件可求其卷积和: 
[MATLAB程序]

k1=-2:2;

f1=ones(1,length(k1));

k2=0:3;

f2=2.^k2;

f=conv(f1,f2)

[程序运行结果]

f =

137151514128

可见,conv()函数不需要给定f1(n)、f2(n)的非零样值的时间序号,也不返回卷积和序列f(n)的时间序号; 此外,conv()假定f1(n)、f2(n)都是从n=0开始,这就限制了它的应用范围。因此,要对从任意n值开始的序列进行卷积和运算,同时正确标识出函数conv()的计算结果中各项值的位置序号n,还须构造序列f1(n)、f2(n)和f(n)的对应序号向量。下面是求序列f1(n)、f2(n)卷积和的实用函数dconv(),它可实现序号向量的返回。
[MATLAB程序] 

function [f,k]=dconv(f1,k1,f2,k2) 					  %求卷积和:f(k)=f1(k)*f2(k)

f=conv(f1,f2)

k0=k1(1)+k2(1);                                 %计算序列f非零样值的起点位置k0

k3=length(k1)+length(k2)-2;                       %计算序列f非零样值的宽度

k=k0:k0+k3;                                         %确定序列f非零样值的序号向量

subplot(2,2,1); stem(k1,f1,'fill');title('f1(k)');xlabel('k');

subplot(2,2,2); stem(k2,f2,'fill');title('f2(k)');xlabel('k');

subplot(2,2,3); stem(k,f,'fill');title('f(k)=f1(k)*f2(k)');xlabel('k');

h=get(gca,'position');

h(3)=2.5*h(3);

set(gca,'position',h)

【例515】考虑离散时间信号


y(n)=3R(t+3)-6R(t+1)+3R(t)-3u(t-3)t=0.15n 


它是以抽样时间间隔Ts=0.15,对一个由斜变信号和单位阶跃信号组成的连续时间信号进行抽样而获得的。编写MATLAB函数产生斜变信号和单位阶跃信号,并获得y(n),然后再编写一个MATLAB函数对y(n)进行奇、偶分解。
解:  信号y(t)是通过将从-∞到∞时出现的不同信号顺序地相加而获得的: 


y(t)=0,t<-3

3R(t+3)=3t+9,-3≤t<-1

3t+9-6R(t+1)=3t+9-6(t+1)=-3t+3,-1≤t<0

-3t+3+3R(t)=-3t+3+3t=3, 0≤t<3

3-3u(t-3)=3-3=0,t≥3


本例所用的三个函数ramp、ustep和evenodd均在后面给出。下面的程序说明了如何使用这些函数产生具有合适的斜率、时移的斜变信号和有着期望延迟的单位阶跃信号,以及如何计算y(n)的偶、奇分量。
[MATLAB程序]

Ts=0.15; 

t=-5:Ts:5;                                       %抽样时间间隔

y1=ramp(t,3,3);                                  %时间支撑

y2=ramp(t,-6,1);

y3=ramp(t,3,0);                                  %斜变信号

y4=-3*ustep(t,-3);                                %单位阶跃信号

y=y1+y2+y3+y4;

[ye,yo] = evenodd(y);

为连续时间信号y(t)选择的支撑是-5≤t≤5,当以Ts=0.15 对y(t)进行抽样时,这个支撑被转化成为离散时间信号的支撑-5≤0.15n≤5,或-5/0.15≤n≤5/0.15,由于该支撑的两个边界不是整数,为了使它们成为整数(这是离散时间信号定义所要求的),此处利用MATLAB函数floor来求出小于-5/0.15和-5/0.15的整数,于是产生了一个取值范围-34,32,画y(n)时用到了该范围。
以下函数可以产生一个时间范围内的具有不同斜率和时移的斜变信号: 
[MATLAB程序]

function y=ramp(t,m,ad)                    %产生斜变信号

% t:时间支撑

%m:斜变信号的斜率

%ad:超前(正的),延迟(负的)因子

N=length(t);

y=zeros(1,N);

for i=1:N,

if t(i)>=-ad,

y(i)=1;

y(i)=m*(t(i)+ad);

end

end

同理,以下函数产生具有不同时移的单位阶跃信号(注意与函数ramp的相似之处)。
[MATLAB程序]

function y=ustep(t,ad)

%产生单位阶跃信号

%t:时间支撑

%ad:超前(正的),延迟(负的)因子

N=length(t);

y=zeros(1,N);

for i=1:N,

if t(i)>=-ad,

y(i)=1;

end

end

最后,以下函数可用于计算离散时间信号的偶、奇分解。在产生偶、奇分量时需要的反褶信号可用MATLAB函数fliplr完成。
[MATLAB程序]

function [ye,yo]=evenodd(y)             %偶/奇分解

%注意:信号的支撑应该关于原点对称

%y:模拟信号

%ye,yo:偶分量和奇分量

yr=fliplr(y);

ye=0.5*(y+yr);

yo=0.5+(y-yr);

【例516】已知模拟信号x(t)=e-atcos(Ω0t)u(t),通过抽样能够获得离散时间信号


y(n)=αncos(ω0n)u(n)


考虑当α=0.9和ω0=π/2时的情况,为了能够从x(t)通过抽样获得y(n),求a、Ω0和TS的值。用MATLAB绘制x(t)和y(n)的图形。
解: 对比连续时间信号和对应的抽样信号,考虑到奈奎斯特抽样条件应有


α=e-aTS
ω0=Ω0TS
TS≤πΩmax


假定最大频率为Ωmax=NΩ0,且N≥2,若设TS=π/NΩ0,将它代入以上三个方程可以得到


α=e-aπ/NΩ0

ω0=Ω0π/NΩ0=π/N

如果想要α=0.9,ω0=π/2,那么可得N=2,且对任意Ω0>0有


a=-2Ω0πloge0.9 


例如,如果Ω0=2π,那么a=-4loge0.9,TS=0.25,利用以上参数可以绘制出相对应的连续时间信号和离散时间序列。MATLAB程序如下: 
[MATLAB程序]

a=-4*log(0.9);Ts=0.25;                             %参数

alpha=exp(-a*Ts);

n=0:30;y=alpha.^n.*cos(pi*n/2);                     %离散时间信号

t=0:0.001:max(n)*Ts;

x=exp(-a*t).*cos(2*pi*t);                           %模拟信号

stem(n,y,'r');hold on

plot(t/Ts,x);grid;legend('y[n]','x(t)');hold off

[程序运行结果]
运行得到对连续信号x(t)抽样产生期望的离散时间信号y(n)如图525所示。


图525对连续信号x(t)抽样产生期望的离散时间信号y(n)



【例517】已知h(n)=13[δ(n)+δ(n-1)+δ(n-2)],利用函数conv()计算x(n)=u(n)或x(n)=cos(2πn/3)u(n)时的卷积和,程序如下:
[MATLAB程序]

X1=[0 0 ones [1,20]]

N=-2:10;n1=0:19;

X2=[0 0 cos(2*pi*n1/3)];

h=(1/3)*ones(1,3);

Y=conv(x1,h);y1=y(1:length(n));

Y=conv(x2,h);y2=y(1:length(n));

注意,每个输入序列在开始时都有两个零值,因而求出的响应是n≥-2之后的。再者,若输入是无限长序列,在MATLAB中只能用有限长序列近似它们,因而用函数conv计算得到的卷积的最后几个值都不正确,所以不应该考虑它们。本例中卷积结果的最后两个数值就不正确。
【本章小结】本章主要介绍了离散时间系统的定义,常用离散信号以及线性移不变离散时间系统的时域分析。重点在于与连续时间信号进行比较学习,读者应掌握一些重要概念,如双零响应、卷积积分等。
习题
51分别绘出以下各序列的图形。
(1) x(n)=12nu(n)
(2) x(n)=(-2)nu(n)
(3) x(n)=2nu(n)
(4) x(n)=12n+1u(n+1)
52判断以下各序列是否周期性的,如果是周期性的,试确定其周期。
(1) x(n)=Acos3π4n-π8
(2) x(n)=ejπ8-π

53解差分方程。
(1) y(n)-12y(n-1)=0,y(0)=2
(2) y(n)+3y(n-1)=0,y(1)=3
54解差分方程。
(1) y(n)-7y(n-1)+16y(n-2)-12y(n-3)=0,y(0)=0,y(1)=-1,y(2)=-3
(2) y(n)-y(n-2)=0,y(1)=1,y(2)=2
(3) y(n)+23y(n-1)=0,y(0)=1

55解差分方程y(n)+2y(n-1)=n-2。已知边界条件y(0)=1。
56已知一阶因果离散系统的差分方程为

y(n)+3y(n-1)=x(n)

试求: 
(1) 系统的单位样值响应h(n); 
(2) 当激励h(n)为单位阶跃序列时,求零状态响应y(n)。
57以下各序列是系统的单位样值响应h(n),试分别讨论各系统的因果性与稳定性。
(1) δ(n+3)(2) 3n[u(n)-u(n-3)]
(3) 1nu(n)(4) 1n!u(n)
(5) 2n[u(n)-u(n-5)](6) 0.5nu(-n)

58以下系统x(n)表示激励,y(n)表示响应。判断激励与响应的关系是否线性的,是否时不变的。

y(n)=x(n)cos2π3n+π6

59已知序列x1(n)和x2(n)如下,n=0的时刻示于箭头处。求它们的卷积序列。

x1(n)={2112}x2(n)={11122}

↑↑

510已知一线性时不变系统的单位样值响应h(n),除在N0≤n≤N1区间之外都为零。而输入x(n)除在N2≤n≤N3区间之外为零。这样,响应y(n)除在N4≤n≤N5之外均都限制为零。试用N0、N1、N2、N3来表示N4与N5。
习 题 答 案
51








52(1) x(n)是周期性的,周期为8; 
(2) x(n)是非周期性的。
53(1) y(n)=2×12n=12n-1
(2) y(n)=-1×(-3)n
54(1) y(n)=3n-(n+1)n
(2) y(n)=32+12(-1)n
(3) y(n)=-23n
55y(n)=1+12n2+12n=1+12n(n+1)
56(1) y(n)=(-3)n
(2) y(n)=34×(-3)n+14
57(1) δ(n+3): 非因果,稳定。
(2) 3n[u(n)-u(n-3)]: 因果,稳定。
(3) 1nu(n): 因果,不稳定。
(4)  1n!u(n): 因果,稳定。
(5) 2n[u(n)-u(n-5)]: 因果,稳定。
(6) 0.5nu(-n): 因果,稳定。
58系统线性,时变。
59{y(n)}={23489664}
↑
510N4=N0+N2N5=N1+N3