1、1Introduction to Signal ftrocessing第三章 离散系统本 章 的 讨 论 重 点 是 离 散 系 统 , 尤 其 是 离 散 线 性 时 不 变 系 统 。 线 性 时 不 变 系 统 的 输 入 输 出 ( I/O) 方 程可以用输入信号与系统冲激响应的离散卷积来表示。根据系统的冲激响应是否是有限延时还是无限延时可以分为有限冲激响应(FIR)和无限冲激响 应(IIR)两种。本章的主要目的是为 FIR 滤波器设计算法。 FIR 滤波算法可以分为按块(Block to Block) 和样值处理(Sample to Sample )算法两种。分批处理算法中,输入信号
2、视为一次抽样的块。将这一块信号与滤波器冲激响应卷积得到一个输 出块。如果输入序列时限非常长或者是无限延时,这种方法需要做些改进,比如说可以将输入信号分成 多个块,每一块的长度都可以分别处理,可以一次滤波一块,然后再把输出拼凑在一起。样值处理算法中,一次只处理一个抽样。滤波器可以看作是一台状态机器,也就是说,把输入抽 样与滤波器当前的状态结合起来计算当前的输出抽样, 同时也更新滤波器的内部状态为下一次处理作准 备。当输入信号特别长的时候,这种方法对于实时运算特别有效。滤波器自身特性变化的自适应滤波 就适合于使用这种算法。目前的 DSP 芯片对这种算法也很有效。3.1 输入输出规则离散系统所实现的
3、就是将输入的离散抽样序列 x(n),根据一定的输入 /输出(I/O)规则转换成输 出序列的运算。I/O 规定了怎样由已知的输入计算输出。样值处理方法,我们可以认为其 I/O 规则就是一次处理一个输入抽样。按块处理的方法,输入序列划分成块,每次处理一块。x0 y 0x x1 H y1 y x2 M y 2 M 因此其 I/O 规则也就是将输入向量根据某种函数映射成输出向量。y Hx对于线性系统,这种映射就是用矩阵 H 作 线 性 变 换 。 线 性 定 常 系 统 , 其 变 换 矩 阵 H 根据系统的冲 激响应有特定的结构。例 3.1.1例 3.1.2y(n) 2x(n)3x(n1)4x(n2
4、) 。n 时 刻 的 输 出 是 此 前 连 续 三 个 输 入 抽 样 的 加 权 和 。 也 就 是 说 , n 时 刻 , 线 性 系 统 必 须 记 住 前 两 个 时 刻的抽样 x(n-1)、x(n-2) 。x , x , x ,L, x ,L1 n H y , y , y ,L, y ,L1 n第三章 离散时间系统 2 y y3 y2 y 4 Hx 3例 3.1.3 将长度为 L=4 的输入抽样 x0 , x1 , x2 , x3 视为一块,例 3.1.2 所示的线性系统将其转换成长 度为 6 的输出序列。输出序列的长度比输入序列长度大 2,因为系统必须保存两个抽样,最后的两个输出
5、可以认为是 输入消失后(input-off)的过渡状态。如果输入的抽样为 L=5,那么,输出的序列为: y0 2 0 0 0 0 y1 3 2 00 0x 04 3 2 0 0 x 10 4 3 2 0x20 0 4 3 2x y5 0 0 0 4 3x4 y6 0 0 0 0 4例 3.1.4、例 3.1.2 的输入输出方程也可以用下列样值处理的算法来实现:y(n)=2x(n)+3w1(n)+4w2(n) w2(n+1)=w1(n)w1(n+1)=x(n)附加的 w1(n)、w 2(n)可以视为系统的内部状态。当前的输入结合当前的内部状态足以计算当前的 输 出 。 由 有 下 一 个 输 入
6、 x(n+1)所产生的输出 y(n+1)要求我们知道已经更新的内部状态。而此时的内部状 态(n+1 时刻的内部状态)已经更新。也就是说, n+1 时刻,我们有:y(n+1)= 2x(n+1)+3w1(n+1)+4w2(n+1) w2(n+2)=w1(n+1)w1(n+2)=x(n+1)这样的计算是从某个时刻开始并且不断重复,我们可以归结为以下算法:一旦内部状态的当前值在计算输出 y 的 时 候 使 用 过 以 后 , 他 们就被后两个赋值的方程更新,用来计算下一个输入的抽样。因 此 w1、 w2必 须 在 一 次 调 用 到 下 一 次 调 用 的 过 程 中 保 存 。 w1、 w2更新的次
7、序非常重要,也就是首先更新 w2,接下来更新 w1, 以避免把正确的值覆盖。例 3.1.2、例 3.1.3、例 3.1.4 是同一个离散系统的等效描述方式。究竟是采用哪一种形式取决于应 用 的 场 所 , 也 就 是 要 看 输 入 序 列 是 有 限 长 还 是 无 限 长 、 输 入 抽 样 是 否 在 接 收 到 以 后 应 该 立 刻 处 理 还 是 可 以延缓处理。上面的例子实际上是用下述 I/O 方程描述的、具有更一般形式的状态空间的特例:y(n)=g(x(n),s(n) 输出方程 y0 y1 23 y3 y y5 4 00002340000234000x0 y y 2 40 x
8、2x2 1 Hx3 x 3 4for each new input x do: y:= 2x+3w 1+4w2 w2:=w 1w1:=x3Introduction to Signal ftrocessings(n+1)=f(x(n),s (n) 状态更新方程。w1(n) 其中 s(n) 是维数一定的状态方程矢量。比如说前面的例子中,s (n) w (n) 。I/O 算法根据当前 2 已知的输入 x(n)和当前的状态 s(n)计算出当前的输出 y(n)和下一时刻的状态 s(n+1)。也可以将它表述成下面的重复演算形式:线性时不变系统的状态空间实现是由函数 f 和 g 来表述的,而 f 和 g又是
9、其变量的线性函数,即:f(x,s)=As+Bx g(x,s)=Cs+DxA B C D 维数各不相同。对于上例,我们有:例 3.1.5 y(n) 0.5 y(n 2) 2x(n) 3x(n 1)输出由常系数差分方程递归计算得到。任意时刻 n,系统必须记住前一个输入 x(n-1)和前一个时刻的输 出 y(n-1)。例 3.1.6 例 3.1.5 也可以将 I/O 方程表述为样值运算算法:它对应于所谓差分方程的直接实现形式,要求计算并且更新附加量w 1,v1。 例 3.1.5 所示的 I/O 计算规则也可与下列所谓的规范形式相对应:y(n) 1 x(n 2) x(n 1) x(n) x(n 1)
10、x(n 2) 为线性时不变系统5y(n) 2x(n) 3y(n) x 2 (n) 非线性、时不变系统y(n) 2x(n) 3x(n 1) x(n)x(n 1)y(n) medx(n 1), x(n), x(n 1) 取中间值y : 2x 3w 4w 1 2 3,4w 1 w2 2x 3,4s 2x g(x, s) w1 x 0s : w2 w1 10 w1 1 x 00w2 0 10 1 s x f (x, s)0 0for each new input x do: y:=0.5w1+2x+3v1w1:=yv1:=xfor each new input x do: w0:=x+0.5w1 y:
11、=2w0+3w1w1:=w0for each new input x do: y:=g(x,s)s:=f(x,s)第三章 离散时间系统 4y(n) nx(n)y(n) 1 x(0) x(1) L x(n 1)n线性、时变系统y(n 1) n n 1 y(n) 1n 1 x(n)例 3.1.16x(n 2)y(n) 0n 为偶数 n 为奇数相当于一个上采样器。在抽样之间插入零,因此输出将输入抽样的数量增加。3.2 线性与时不变性一 个 系 统 是 线 性 系 统 , 则 当 输 入 是 由 两 个 抽 样 序 列 x1(n)、 x2(n)的线性组合时,其输出序列也是其 相应输出序列的线性组合。即
12、:时,其输出为(3.2.1)(3.2.2)为了验证一个系统是否是线性系统,必须分别验证三个输出序列,y(n)、y 1(n)、y 2(n)满足(3.2.2)式。时不变系统是指系统不随时间变化而改变。相同的输入序列,无论在何时施加到系统上,将产生 相 同 的 输 出 。 输 入 信 号 延 时 ( 右 移 ) 或 提 前 ( 左 移 ) D 单位时间,输出序列也将相应延时(右移)或提 前(左移)D 单位时间。0 0 D时不变可以用下图来解释。x , x , x , x ,L, x ,L0 1 n H x ,0, x ,0, x ,0, x ,0L, x ,0,L0 1 2 3 nx1(n) a1
13、x1(n) y1(n) a1Hx(n) y(n)H a1y1(n)+ a2y2(n)Hx2(n) a2 x2(n) y2(n) a2x(n) a1x1 (n) a2 x2 (n)y(n) a1 y1(n) a2 y2 (n)5Introduction to Signal ftrocessingDa1 y1(n) a2 y2 (n) ya1x1(n) a2 x2 (n)x(n) y(n-D) x(n)输入信号经系统先延时后变换和输入信号先经过系统变换后的输出再延时得到的输出序列应该是 一样的。设 YD(n)为先延时,后变换得到的输出。Y(n-D)为先变换,后延时得到的输出。 若 yD(n)=y(
14、n-D),那么,该系统是时不变系统。例 3.2.1若则 而y(n)=2x(n)+3x(n) a1x1 (n) a2 x2 (n) 。y(n) 2a1x1(n) a2 x2 (n) 3a1 y1(n) a2 y2 (n) a12x1(n) 3 a22x2 (n) 3显然输入为两个信号的线性叠加时,输出并不是两个信号单独作用时输出的线性叠加,既:。所以为非线性系统。y(n)=x2(n)x(n) a1x1 (n) a2 x2 (n) 时,则y(n) a x (n) a x (n)2 a 2 x2 (n) 2a a x (n)x (n) a 2 x2 (n)1 1 2 22 2 1 1 1 2 1 2
15、 2 2非线性系统。 a1x1 (n) a2 x2 (n) a1 y1(n) a2 y2 (n)而为时变系统。 同理,若:y(n)=nx(n) yD(n)=nxD(n)=nx(n-D)y(n-D)=(n-D)x(n-D)yD(n)y(n-D)y(n)=x(2n) yD(n)=xD(2n)=x(2n-D)y(n-D)=x(2(n-D)=x(2n-2D)y(n-D) yD(n)所以是时变系统。这是一个下采样器。我们可以从原信号的输出和延时信号的输出更直观的看出:H) yD(n)H y(n) D x(n-DxD(n)第三章 离散时间系统 6x , x , x , x , x , x , x L0 1
16、 4 5 6 H Hx , x , x , x ,L0 2 4 60, x , x , x , x , x , x , x L0 1 4 5 6 0, x , x , x ,L1 3 5第 一 种 情 况 下 , 输 入 经 系 统 变 换 后 每 两 个 输 入 丢 掉 丢 掉 一 个 。 下 面 一 种 情 况 下 , 输 入 延 时 一 个 单 位 , 输 出同样每两个输入被丢掉一个,得到的输出并不是上面的输出延时一个单位。所以为时变系统。3.3 冲激响应。(离散)线性时不变系统可以用其冲激响应序列 h(n)来唯一表征。而冲激响应 h(n)就是系统对于 单位冲激输入 (n)的响应。1 当
17、 (n) 0 当n 0n 0(n) H(n) h(n)0 n n因此,我们有: (n) h(n)或者说:若系统是时不变系统,就意味单位冲激输入延时一段时间, (比如说,D 单位时间) ,其冲激响应 输出将会是大小一样,但延时为 D 的输出 h(n-D)。 (n D) h(n D)其中 D 可以正,也可以负。 线性性就意味任意输入的线性组合将会产生同样的线性组合输出。 (n) (n 1) (n 2) h(n) h(n 1) h(n 2)更一般性,三个输入的加权线性组合:x(0) (n) x(1) (n 1) x(2) (n 2)将会产生同样三个输出的加权线性组合:x(0)h(n) x(1)h(n
18、 1) x(2)h(n 2)任意输入序列, x(0) ,x(1) ,x(2) ,可以看作是延时并且权重为单位冲激函数的线性组合。x(n) x(0) (n) x(1) (n 1) x(2) (n 2) L上式中,n=0 则只有第一项不为零,其余各项为零。n=1 则只有第二项不为零,其余各项为零等等。 因而得到。1, 0, 0, 0, L h0 , h1, h2 ,L h(n)7Introduction to Signal ftrocessingy(n) x(0)h(n) x(1)h(n 1) x(2)h(n 2) L或写作:(LTI Form)(3.3.2)上式又称为输出函数的 LTI 形式。其
19、实就是输入序列 x(n)与滤波器冲激响应序列 h(n)的离散时间卷积。 也可以说,LTI(线性时不变系统)就是一个卷积器。一般说来,上式中的求和 m 值可以扩展到负数,主要取决于输入信号。改变求和式当中求和项的 次序,也可以写成另一种形式:图 3.3.3 线性组合的响应3.4 FIR 和 IIR 滤波器离散时不变系统根据其冲激响应是否是有限延时还是无限延时可以分成 FIR( 有限冲激响应)和 IIR( 无限冲激响应)两类。FIR 冲激响应 IIR 冲激响应FIR 滤波器的冲激响应仅仅延续有限长时间,也就是说,0nM,其余均为零。h0 , h1, h2 ,L , hM ,0,0,0,L M 称为
20、滤波器的阶数。FIR 滤波器冲激响应矢量 h 的长度为:冲激响应的系数 h0 , h1, h2 ,L , hM 在不同的教科书上有不同的名称, 比方说, 滤波器系数、 滤波器的权、filters taps(滤波器的节拍)。式 3.3.3 又成为卷积的直接形式。当 mM 和 m0 时,冲激函数 (n)=0,因此差分方程为:h(n)=h(n-1),也就是说:h(0)=h(1)=h(2)=1。所有系数都是一样的。 因此我们有:1h(n) u(n) 0n 0n 1My(n) h(m)x(n m)m0y(n) h(m)x(n m)m09Introduction to Signal ftrocessing
21、其中,u(n)为离散时间单位阶跃序列。将上式代入卷积方程 (3.4.3),我们得到: y(n) h(m)x(n m) x(n m)m0 m0或者写成:y(n) x(n) x(n 1) x(n 2) x(n 3) L将 n 换成 n-1,前一时刻的输出为:y(n 1) x(n 1) x(n 2) x(n 3) L由此得到:y(n) y(n 1) x(n)因此,I/O 卷积方程等效于下列递归 差分方程:y(n) y(n 1) x(n)这是一个累加器,或者叫做离散时间积分器。注意到 I/O 卷积方程(递归差分方程)与 h(n)的差 分方程具有相同的形式。实际上,冲激响应差分方程中,只要将 y(n)=
22、h(n)、x(n)=(n) 代入滤波器系数 所满足的差分方程,就可以得到递归差分方程。例 3.4.5 设滤波器系数满足下列差分方程:h(n) ah(n 1) (n) a 为常数。求输出 y(n) 与输入 x(n) 之间的差分方程。 解:h(0) ah(1) (0)h(1) ah(0) (1) a 1 0 a h(2) ah(1) (2) a a 0 a 2 h(3) ah(2) (3) a a 2 0 a3以此类推,我们得到:代入卷积方程,得到:h(n) anu(n) a0n 0n 1y(n) x(n) ax(n 1) a2 x(n 2) a3x(n 3) L x(n) ax(n 1) ax(
23、n 2) a2 x(n 3) Ly(n) ay(n 1) x(n)可以看出,它所满足的方程正好是滤波器系数所满足的差分方程。例 3.4.6 求满足下列 I/O 差分方程的 IIR 滤波器的卷积方程和冲激响应:y(n) 0.8 y(n 1) x(n)分方程:解:上述方程恰好是上例中 a=0.8。令 x(n)=(n)、y(n)=h(n),我么就得到 h(n)所满足的差h(n) 0.8h(n 1) (n)n第三章 离散时间系统 1022 3设初始条件 h(-1)=0,对 n 作几次迭代,我们得到:(0.8)nh(n) (0.8)nu(n) 0n 0n 1将 h(n)代入卷积方程(3.4.3) 我们得
24、到:y(n) x(n) (0.8)x(n 1) (0.8)2 x(n 2) (0.8)3 x(n 3) L上式包括无限多项。例 3.4.7 设滤波器的冲激响应为:2 n 0h(n) 4(0.5)n1 n 1求 y(n)和 h(n)所满足的差分方程。解:h(0)和 h(1)为任意给定的。n2 后,各系数可以递归计算。比如说:h(1)=4 h(2)=0.5h(1) h(3)=0.5h(2) h(4)=0.5h(3) 把以上系数代入卷积方程(3.4.3),我们得到:yn h0 xn h1 xn1 h2 xn2 h3 xn3 L 2xn 4xn1 2xn2 0.5xn3 0.5 2 xn4 L此前一个
25、时刻的输出:yn1 2xn1 4xn2 2xn3 0.5xn4 0.5 xn5 L方程两边同乘以 0.5 得到:0.5 yn1 xn1 2xn2 0.5xn3 0.5 xn4 0.5 xn5 L用 y(n)减去 0.5y(n-1)得到:y(n) 0.5 y(n 1) 2x(n) 3x(n 1)或者:y(n) 0.5 y(n 1) 2x(n) 3x(n 1)既为输入和输出所满足的差分方程。用 h(n)替换 y(n),(n) 替换 x(n),得到冲激响应所满足的差分方程:h(n) 0.5h(n 1) 2 (n) 3 (n 1)例 3.4.8 求满足下列差分方程的 IIR 滤波器的卷积和冲激响应。y(n) 0.25 y(n 2) x(n)解:冲激响应满足下列差分方程:h(n) 0.25h(n 2) (n)设初始条件为零:h(-1)=h(-2)=0。滤波器前几项系数的迭代为: