Introduction to Signal Processing 第三章离散系统 本章的讨论重点是离散系统,尤其是离散线性时不变系统。线性时不变系统的输入输出(/O)方 程可以用输入信号与系统冲激响应的离散卷积来表示。 根据系统的冲激响应是否是有限延时还是无限延时可以分为有限冲激响应(FR)和无限冲激响 应R)两种。本章的主要目的是为FIR滤波器设计算法。FIR滤波算法可以分为按块(Block to Block) 和样值处理(Sample to Sample)算法两种。 分批处理算法中,输入信号视为一次抽样的块。将这一块信号与滤波器冲激响应卷积得到一个输 出块。 如果输入序列时限非常长或者是无限延时,这种方法需要做些改进,比如说可以将输入信号分成 多个块,每一块的长度都可以分别处理,可以一次滤波一块,然后再把输出拼凑在一起。 样值处理算法中,一次只处理一个抽样。滤波器可以看作是一台状态机器,也就是说,把输入抽 样与滤波器当前的状态结合起来计算当前的输出抽样,同时也更新滤波器的内部状态为下一次处理作准 备。 当输入信号特别长的时候,这种方法对于实时运算特别有效。滤波器自身特性变化的自适应滤波 就适合于使用这种算法。目前的DSP芯片对这种算法也很有效。 3.1 输入输出规则 离散系统所实现的就是将输入的离散抽样序列x(n),根据一定的输入/输出(I/O)规则转换成输 出序列的运算。I/O规定了怎样由已知的输入计算输出。 样值处理方法,我们可以认为其/O规则就是一次处理一个输入抽样。 [x1,x2,X3,…,xn,] y,y2,3,,yn, 按块处理的方法,输入序列划分成块,每次处理一块。 Xo 0 xI =y x2 y2 : 因此其I/O规则也就是将输入向量根据某种函数映射成输出向量。 y=] 对于线性系统,这种映射就是用矩阵H作线性变换。线性定常系统,其变换矩阵H根据系统的冲 激响应有特定的结构。 例3.1.1 例3.1.2m=2m)+3n-0+40n-2) n时刻的输出是此前连续三个输入抽样的加权和。也就是说,n时刻,线性系统必须记住前两个时 刻的抽样x(n-1)、xn-2)
Introduction to Signal Processing 1 第三章 离散系统 本章的讨论重点是离散系统,尤其是离散线性时不变系统。线性时不变系统的输入输出(I/O)方 程可以用输入信号与系统冲激响应的离散卷积来表示。 根据系统的冲激响应是否是有限延时还是无限延时可以分为有限冲激响应(FIR)和无限冲激响 应(IIR)两种。本章的主要目的是为 FIR 滤波器设计算法。FIR 滤波算法可以分为按块(Block to Block) 和样值处理(Sample to Sample)算法两种。 分批处理算法中,输入信号视为一次抽样的块。将这一块信号与滤波器冲激响应卷积得到一个输 出块。 如果输入序列时限非常长或者是无限延时,这种方法需要做些改进,比如说可以将输入信号分成 多个块,每一块的长度都可以分别处理,可以一次滤波一块,然后再把输出拼凑在一起。 样值处理算法中,一次只处理一个抽样。滤波器可以看作是一台状态机器,也就是说,把输入抽 样与滤波器当前的状态结合起来计算当前的输出抽样,同时也更新滤波器的内部状态为下一次处理作准 备。 当输入信号特别长的时候,这种方法对于实时运算特别有效。滤波器自身特性变化的自适应滤波 就适合于使用这种算法。目前的 DSP 芯片对这种算法也很有效。 §3.1 输入输出规则 离散系统所实现的就是将输入的离散抽样序列 x(n),根据一定的输入/输出(I/O)规则转换成输 出序列的运算。I/O 规定了怎样由已知的输入计算输出。 样值处理方法,我们可以认为其 I/O 规则就是一次处理一个输入抽样。 [ , , , , , ] [ , , , , , ] 1 H x1 x2 x3 L xn L → y y2 y3 L yn L 按块处理的方法,输入序列划分成块,每次处理一块。 x = y → = M M 2 1 0 H 2 1 0 y y y x x x 因此其 I/O 规则也就是将输入向量根据某种函数映射成输出向量。 y = H[x] 对于线性系统,这种映射就是用矩阵 H 作线性变换。线性定常系统,其变换矩阵 H 根据系统的冲 激响应有特定的结构。 例 3.1.1 例 3.1.2 y(n) =2x(n)+3x(n−1)+4x(n−2) 。 n 时刻的输出是此前连续三个输入抽样的加权和。也就是说,n 时刻,线性系统必须记住前两个时 刻的抽样 x(n-1)、x(n-2)
第三章 离散时间系统 例3.13将长度为L=4的输入抽样o,x1,2,x视为一块,例3.12所示的线性系统将其转换成长 度为6的输出序列。 yo 0 0 0 3 2 0 0 y2 4 3 2 0 y= Hx 3 0 4 3 2 X2 0 0 4 3 0 0 0 4 输出序列的长度比输入序列长度大2,因为系统必须保存两个抽样,最后的两个输出可以认为是 输入消失后(iput-of田的过渡状态。如果输入的抽样为L=5,那么,输出的序列为: % 0 000 3 2 0 0 0 2 4 3 2 0 0 y= y3 0 2 0 Hx y4 0 0 3 X3 0 0 0 4 3 y6 0 0 4 例3.1.4、例3.12的输入输出方程也可以用下列样值处理的算法来实现: y(n)=2x(n)+3wi(n)+4w2(n) w2(n+1=w(n) wi(n+1)=x(n) 附加的w(n)、w2()可以视为系统的内部状态。当前的输入结合当前的内部状态足以计算当前的 输出。由有下一个输入x(n+1)所产生的输出y(+1)要求我们知道己经更新的内部状态。而此时的内部状 态+1时刻的内部状态)已经更新。也就是说,n+1时刻,我们有: y(n+1)F2x(+1)+3w1n+1)+4w2(n+1) w2(n+2=w1(n+1) w1(n+2Fx(n+1) 这样的计算是从某个时刻开始并且不断重复,我们可以归结为以下算法: 一旦内部状态的当前值在计算输出y的时候使用过以后,他 for each new input x do: 们就被后两个赋值的方程更新,用来计算下一个输入的抽样。因 y:=2x+3w1+4w2 此{w1、w}必须在一次调用到下一次调用的过程中保存。{w、 1W2:=1w1 w2}更新的次序非常重要,也就是首先更新wM2,接下来更新w1, W1:=x 以避免把正确的值覆盖。 例3.1.2、例3.1.3、例31.4是同一个离散系统的等效描述方式。究竞是采用哪一种形式取决于应 用的场所,也就是要看输入序列是有限长还是无限长、输入抽样是否在接收到以后应该立刻处理还是可 以延缓处理。 上面的例子实际上是用下述/O方程描述的、具有更一般形式的状态空间的特例: y(n)=g(x(n),s(n)) 输出方程
第三章 离散时间系统 2 例 3.1.3 将长度为 L=4 的输入抽样{x0 , x1 , x2 , x3 }视为一块,例 3.1.2 所示的线性系统将其转换成长 度为 6 的输出序列。 y = Hx = = 3 2 1 0 5 4 3 2 1 0 0 0 0 4 0 0 4 3 0 4 3 2 4 3 2 0 3 2 0 0 2 0 0 0 x x x x y y y y y y 输出序列的长度比输入序列长度大 2,因为系统必须保存两个抽样,最后的两个输出可以认为是 输入消失后(input-off)的过渡状态。如果输入的抽样为 L=5,那么,输出的序列为: y = Hx = = 4 3 2 1 0 6 5 4 3 2 1 0 0 0 0 0 4 0 0 0 4 3 0 0 4 3 2 0 4 3 2 0 4 3 2 0 0 3 2 0 0 0 2 0 0 0 0 x x x x x y y y y y y y 例 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)、w2(n)可以视为系统的内部状态。当前的输入结合当前的内部状态足以计算当前的 输出。由有下一个输入 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}更新的次序非常重要,也就是首先更新 w2,接下来更新 w1, 以避免把正确的值覆盖。 for each new input x do: y:= 2x+3w1+4w2 w2:=w1 w1:=x 例 3.1.2、例 3.1.3、例 3.1.4 是同一个离散系统的等效描述方式。究竟是采用哪一种形式取决于应 用的场所,也就是要看输入序列是有限长还是无限长、输入抽样是否在接收到以后应该立刻处理还是可 以延缓处理。 上面的例子实际上是用下述 I/O 方程描述的、具有更一般形式的状态空间的特例: y(n)=g(x(n),s(n)) ———— 输出方程
Introduction to Signal Processing 3 s(n+1)=f(x(n),s(n)) 状态更新方程。 w(n) 其中sn)是维数一定的状态方程矢量。比如说前面的例子中,s(n)= I/O算法根据当前 w2(n) 己知的输入xn)和当前的状态sn)计算出当前的输出y(n)和下一时刻的状态sn+1)。也可以将它表述成 下面的重复演算形式: for each new input x do: 线性时不变系统的状态空间实现是由函数f和g来表述的,而f和g y:=g(x,s) 又是其变量的线性函数,即: s:=f(x,s) f(x,s)=As+Bx g(x,s)=Cs+Dx ABCD维数各不相同。对于上例,我们有: y=2x+3w1+42=[3,4 1W1 +2x=[3,4s+2x=g(x,s) 0 0 0 0 01w2 0 1 x=f(x,s) 例3.1.5 yn))=0.5y(n-2)+2x(n)+3x(n-1) 输出由常系数差分方程递归计算得到。任意时刻,系统必须记住前一个输入x(n-1)和前一个时刻的输 出y(-l)。 例3.1.6例3.1.5也可以将I/0方程表述为样值运算算法: for each new input x do: y=0.5w1+2x+3v1 W1可y VI:=X 它对应于所谓差分方程的直接实现形式,要求计算并且更新附加量{w1,V}。 例3.1.5所示的/O计算规则也可与下列所谓的规范形式相对应: for each new input x do: wo=X+0.5w1 y:=2wo+3wj W1=W0 间=a+2)+a++m+a-小+a-2】为线性时不变系统 (m)=2x(n+3 (n)=x2(n) 非线性、时不变系统 y(n)=2x(n)+3x(n-1)+x(n)x(n-1) y(m)=medx(n+I),x(n),x(n-l]--取中间值
Introduction to Signal Processing 3 s(n+1)=f(x(n),s(n)) ———— 状态更新方程。 其中 s(n)是维数一定的状态方程矢量。比如说前面的例子中,s 。I/O 算法根据当前 已知的输入 x(n)和当前的状态 s(n)计算出当前的输出 y(n)和下一时刻的状态 s(n+1)。也可以将它表述成 = ( ) ( ) ( ) 2 1 w n w n n 下面的重复演算形式: for each new input x do: y:=g(x,s) s:=f(x,s) 线性时不变系统的状态空间实现是由函数 f 和 g 来表述的,而 f 和 g 又是其变量的线性函数,即: f(x,s)=As+Bx g(x,s)=Cs+Dx A B C D 维数各不相同。对于上例,我们有: : 2 3 4 [ ] 3,4 2 [3,4] 2 ( , ) 2 1 1 2 x s x g x s w w y x w w + = + = = + + = ( , ) 0 1 1 0 0 0 0 1 1 0 0 0 : 2 1 2 1 1 s x s x f x s w w w x w w = + = + = = = 例 3.1.5 y(n) = 0.5y(n − 2) + 2x(n) + 3x(n −1) 输出由常系数差分方程递归计算得到。任意时刻 n,系统必须记住前一个输入 x(n-1)和前一个时刻的输 出 y(n-1)。 例 3.1.6 例 3.1.5 也可以将 I/O 方程表述为样值运算算法: for each new input x do: y:=0.5w1+2x+3v1 w1:=y v1:=x 它对应于所谓差分方程的直接实现形式,要求计算并且更新附加量{w1,v1}。 例 3.1.5 所示的 I/O 计算规则也可与下列所谓的规范形式相对应: for each new input x do: w0:=x+0.5w1 y:=2w0+3w1 w1:=w0 [ ( 2) ( 1) ( ) ( 1) ( 2)] 5 1 y(n) = x n + + x n + + x n + x n − + x n − 为线性时不变系统 = + − − −取中间值 = + − + − = = + ( ) [ ( 1), ( ), ( 1)] ( ) 2 ( ) 3 ( 1) ( ) ( 1) ( ) ( ) ( ) 2 ( ) 3 2 y n med x n x n x n y n x n x n x n x n y n x n y n x n 非线性、时不变系统
第三章离散时间系统 4 y(n)=(n)) m)=0)+x0+…xn-1房 线性、时变系统 n n+)=” n() 例3.1.16 x(n/2) n为偶数 y(n)= 0 n为奇数 相当于一个上采样器。在抽样之间插入零,因此输出将输入抽样的数量增加。 [x0x1,X2,X3,…,Xn] H→[x,0,x,0,x2,0,x3,0…,xn0, S3.2线性与时不变性 一个系统是线性系统,则当输入是由两个抽样序列x1()、x2()的线性组合时,其输出序列也是其 相应输出序列的线性组合。即: x(n)=ax(n)+a,x,(n) (3.2.1) 时,其输出为 y(n)=ay(n)+azy2 (n) (3.2.2) 为了验证一个系统是否是线性系统,必须分别验证三个输出序列,y()、y1()、y2(n)满足(3.2.2) 式。 xi(n) xi(n) yi(n) a H aiyi(n)azy2o) H X2(n) a2 x(n) y2(n)a2 时不变系统是指系统不随时间变化而改变。相同的输入序列,无论在何时施加到系统上,将产生 相同的输出。输入信号延时(右移)或提前(左移)D单位时间,输出序列也将相应延时(右移)或提 前(左移)D单位时间。 0 时不变可以用下图来解释
第三章 离散时间系统 4 ( ) 1 1 ( ) 1 ( 1) { (0) (1) ( 1)} 1 ( ) ( ) ( ) x n n y n n n y n x x x n n y n y n nx n + + + + = = + + − = L 线性、时变系统 例 3.1.16 = 为奇数 为偶数 n x n n y n 0 ( 2) ( ) 相当于一个上采样器。在抽样之间插入零,因此输出将输入抽样的数量增加。 [ , , , , , , ] [ ,0, ,0, ,0, ,0 , ,0, ] 0 1 2 3 H x0 x1 x2 x3 L xn L → x x x x L xn L §3.2 线性与时不变性 一个系统是线性系统,则当输入是由两个抽样序列 x1(n)、x2(n)的线性组合时,其输出序列也是其 相应输出序列的线性组合。即: ( ) ( ) ( ) 1 1 2 2 x n = a x n + a x n (3.2.1) 时,其输出为 ( ) ( ) ( ) 1 1 2 2 y n = a y n + a y n (3.2.2) 为了验证一个系统是否是线性系统,必须分别验证三个输出序列,y(n)、y1(n)、y2(n)满足(3.2.2) 式。 x1(n) a1 x1(n) y1(n) a1 x(n) y(n) a1y1(n)+ a2y2(n) x2(n) a2 x2(n) y2(n) a2 H H H 时不变系统是指系统不随时间变化而改变。相同的输入序列,无论在何时施加到系统上,将产生 相同的输出。输入信号延时(右移)或提前(左移)D 单位时间,输出序列也将相应延时(右移)或提 前(左移)D 单位时间。 0 0 D 时不变可以用下图来解释
Introduction to Signal Processing x(n) H v(n) y(n-D) x(n) x(n-D) yp(n) Xp(n) 输入信号经系统先延时后变换和输入信号先经过系统变换后的输出再延时得到的输出序列应该是 一样的。 设Yo(n)为先延时,后变换得到的输出。Y(n-D)为先变换,后延时得到的输出。 若yD(n)戶y(n-D),那么,该系统是时不变系统。 例3.2.1 y(n)=2xn)+3 若 x(n)=a x (n)+ax2 (n) 则 y(n)=2[a1(n)+a2x2(m]+3 而 [a1h(m+a2y2(m]=a1[2x1(m))+3]+a2[2x2(m)+3] 显然输入为两个信号的线性叠加时,输出并不是两个信号单独作用时输出的线性叠加,既: [a(n)+a22(n)】≠ax(n)+a2x2(n)] 所以为非线性系统。 y(n)=x2(n) x(n)=ax1(n)+a2x2(m)时,则 y(n)=[ax (n)+azx (n)2=ax(n)+2aazx (n)x2 (n)+ax(n) ≠ax2(n)+a2x(m))=a1y(m))+a2y2(n)) 非线性系统。 y(n)=nx(n) yp(n)=nxp(n)=nx(n-D) 而 y(n-D)=(n-D)x(n-D) yo(n)≠y(n-D) 为时变系统。 同理,若: y(n)=x(2n) yp(n)=xp(2n)=x(2n-D) y(n-D)=x(2(n-D))=x(2n-2D) y(n-D)≠yon) 所以是时变系统。这是一个下采样器。我们可以从原信号的输出和延时信号的输出更直观的看出:
Introduction to Signal Processing 5 x(n) y(n) y(n-D) x(n) x(n-D) yD(n) xD(n) H D D H 输入信号经系统先延时后变换和输入信号先经过系统变换后的输出再延时得到的输出序列应该是 一样的。 设 YD(n)为先延时,后变换得到的输出。Y(n-D)为先变换,后延时得到的输出。 若 yD(n)=y(n-D),那么,该系统是时不变系统。 例 3.2.1 y(n)=2x(n)+3 若 ( ) ( ) ( ) 1 1 2 2 x n = a x n + a x n 。 则 y(n) = 2[a1x1(n) + a2 x2 (n)]+ 3 而 [ ( ) ( )] [2 ( ) 3] [2 ( ) 3] a1 y1 n + a2 y2 n = a1 x1 n + + a2 x2 n + 显然输入为两个信号的线性叠加时,输出并不是两个信号单独作用时输出的线性叠加,既: [ ( ) ( )] [ ( ) ( )] 1 1 2 2 1 1 2 2 a y n + a y n ≠ y a x n + a x n 。 所以为非线性系统。 y(n)=x 2 (n) ( ) ( ) ( ) 1 1 2 2 x n = a x n + a x n 时,则 ( ) ( ) ( ) ( ) ( ) [ ( ) ( )] ( ) 2 ( ) ( ) ( ) 1 1 2 2 2 2 2 2 1 1 2 2 2 1 2 1 2 2 2 1 2 1 2 1 1 2 2 a x n a x n a y n a y n y n a x n a x n a x n a a x n x n a x 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) 所以是时变系统。这是一个下采样器。我们可以从原信号的输出和延时信号的输出更直观的看出: