IntroductiontoSignalProcessing1第三章离散系统本章的讨论重点是离散系统,尤其是离散线性时不变系统。线性时不变系统的输入输出(I/O)方程可以用输入信号与系统冲激响应的离散卷积来表示。根据系统的冲激响应是否是有限延时还是无限延时可以分为有限冲激响应(FIR)和无限冲激响应(IIR)两种。本章的主要目的是为FIR滤波器设计算法。FIR滤波算法可以分为按块(BlocktoBlock)和样值处理(SampletoSample)算法两种。分批处理算法中,输入信号视为一次抽样的块。将这一块信号与滤波器冲激响应卷积得到一个输出块。如果输入序列时限非常长或者是无限延时,这种方法需要做些改进,比如说可以将输入信号分成多个块,每一块的长度都可以分别处理,可以一次滤波一块,然后再把输出拼凑在一起。样值处理算法中,一次只处理一个抽样。滤波器可以看作是一台状态机器,也就是说,把输入抽样与滤波器当前的状态结合起来计算当前的输出抽样,同时也更新滤波器的内部状态为下一次处理作准备。当输入信号特别长的时候,这种方法对于实时运算特别有效。滤波器自身特性变化的自适应滤波就适合于使用这种算法。目前的DSP芯片对这种算法也很有效。§3.1输入输出规则离散系统所实现的就是将输入的离散抽样序列x(n),根据一定的输入/输出(I/O)规则转换成输出序列的运算。I/O规定了怎样由已知的输入计算输出。样值处理方法,我们可以认为其I/O规则就是一次处理一个输入抽样。],,,,,[],,,,,[1H1LLLLnnyyyyxxxx3232 →按块处理的方法,输入序列划分成块,每次处理一块。yx=→=MM210H210yyyxxx因此其I/O规则也就是将输入向量根据某种函数映射成输出向量。[]xHy=对于线性系统,这种映射就是用矩阵H作线性变换。线性定常系统,其变换矩阵H根据系统的冲激响应有特定的结构。例3.1.1例3.1.2)2(4)1(3)(2)(−+−+=nxnxnxny。n时刻的输出是此前连续三个输入抽样的加权和。也就是说,n时刻,线性系统必须记住前两个时刻的抽样x(n-1)、x(n-2)。第三章离散时间系统2例3.1.3将长度为L=4的输入抽样{}3210,,,xxxx视为一块,例3.1.2所示的线性系统将其转换成长度为6的输出序列。Hxy===3210543210400034002340023400230002xxxxyyyyyy输出序列的长度比输入序列长度大2,因为系统必须保存两个抽样,昀后的两个输出可以认为是输入消失后(input-off)的过渡状态。如果输入的抽样为L=5,那么,输出的序列为:Hxy===43210654321040000340002340002340002340002300002xxxxxyyyyyyy例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,以避免把正确的值覆盖。foreachnewinputxdo:y:=2x+3w1+4w2w2:=w1w1:=x例3.1.2、例3.1.3、例3.1.4是同一个离散系统的等效描述方式。究竟是采用哪一种形式取决于应用的场所,也就是要看输入序列是有限长还是无限长、输入抽样是否在接收到以后应该立刻处理还是可以延缓处理。上面的例子实际上是用下述I/O方程描述的、具有更一般形式的状态空间的特例:y(n)=g(x(n),s(n))————输出方程IntroductiontoSignalProcessing3s(n+1)=f(x(n),s(n))————状态更新方程。其中s(n)是维数一定的状态方程矢量。比如说前面的例子中,s。I/O算法根据当前已知的输入x(n)和当前的状态s(n)计算出当前的输出y(n)和下一时刻的状态s(n+1)。也可以将它表述成=)()()(21nwnwn下面的重复演算形式:foreachnewinputxdo:y:=g(x,s)s:=f(x,s)线性时不变系统的状态空间实现是由函数f和g来表述的,而f和g又是其变量的线性函数,即:f(x,s)=As+Bxg(x,s)=Cs+DxABCD维数各不相同。对于上例,我们有:[]),(2]4,3[24,3432:2121ssxgxx=+=+=++=),(010100010100:21121sssxfxx=+=+===例3.1.5)1(3)(2)2(5.0)(−++−=nxnxnyny输出由常系数差分方程递归计算得到。任意时刻n,系统必须记住前一个输入x(n-1)和前一个时刻的输出y(n-1)。例3.1.6例3.1.5也可以将I/O方程表述为样值运算算法:foreachnewinputxdo:y:=0.5w1+2x+3v1w1:=yv1:=x它对应于所谓差分方程的直接实现形式,要求计算并且更新附加量{w1,v1}。例3.1.5所示的I/O计算规则也可与下列所谓的规范形式相对应:foreachnewinputxdo:w0:=x+0.5w1y:=2w0+3w1w1:=w0)]2()1()()1()2([51)(−+−+++++=nxnxnxnxnxny为线性时不变系统取中间值−−−+=−+−+==+=)]1(),(),1([)()1()()1(3)(2)()()(3)(2)(2nxnxnxmednynxnxnxnxnynxnynxny非线性、时不变系统第三章离散时间系统4)(11)(1)1()}1()1()0({1)()()(nxnnynnnynxxxnnynnxny+++=+−++==L线性、时变系统例3.1.16=为奇数 为偶数 nnnxny0)2()(相当于一个上采样器。在抽样之间插入零,因此输出将输入抽样的数量增加。],0,,0,,0,,0,,0,[],,,,,,[3210H10LLLLnnxxxxxxxxxx 32→§3.2线性与时不变性一个系统是线性系统,则当输入是由两个抽样序列x1(n)、x2(n)的线性组合时,其输出序列也是其相应输出序列的线性组合。即:)()()(2211nxanxanx+=(3.2.1)时,其输出为)()()(2211nyanyany+=(3.2.2)为了验证一个系统是否是线性系统,必须分别验证三个输出序列,y(n)、y1(n)、y2(n)满足(3.2.2)式。x1(n)a1x1(n)y1(n)a1x(n)y(n)a1y1(n)+a2y2(n)x2(n)a2x2(n)y2(n)a2HHH时不变系统是指系统不随时间变化而改变。相同的输入序列,无论在何时施加到系统上,将产生相同的输出。输入信号延时(右移)或提前(左移)D单位时间,输出序列也将相应延时(右移)或提前(左移)D单位时间。00D时不变可以用下图来解释。IntroductiontoSignalProcessing5x(n)y(n)y(n-D)x(n)x(n-D)yD(n)xD(n)DHHD输入信号经系统先延时后变换和输入信号先经过系统变换后的输出再延时得到的输出序列应该是一样的。设YD(n)为先延时,后变换得到的输出。Y(n-D)为先变换,后延时得到的输出。若yD(n)=y(n-D),那么,该系统是时不变系统。例3.2.1y(n)=2x(n)+3若)()()(2211nxanxanx+=。则3)]()([2)(2211++=nxanxany而]3)(2[]3)(2[)]()([22112211+++=+nxanxanyanya显然输入为两个信号的线性叠加时,输出并不是两个信号单独作用时输出的线性叠加,既:)]()([)]()([22112211nxanxaynyanya+≠+。所以为非线性系统。y(n)=x2(n))()()(2211nxanxanx+=时,则)()()()()()()(2)()]()([)(221122221122222121212122211nyanyanxanxanxanxnxaanxanxanxany+=+≠++=+= 非线性系统。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)所以是时变系统。这是一个下采样器。我们可以从原信号的输出和延时信号的输出更直观的看出:第三章离散时间系统6],,,,0[],,,,,,,0[],,,,[],,,,,,[531H654106420H65410LLLLxxxxxxxxxxxxxxxxxxxxx 3232→→第一种情况下,输入经系统变换后每两个输入丢掉丢掉一个。下面一种情况下,输入延时一个单位,输出同样每两个输入被丢掉一个,得到的输出并不是上面的输出延时一个单位。所以为时变系统。§3.3冲激响应。(离散)线性时不变系统可以用其冲激响应序列h(n)来唯一表征。而冲激响应h(n)就是系统对于单位冲激输入δ(n)的响应。≠==0n00n1)( 当 当 nδδ(n)δ(n)h(n)h(n)0nnH因此,我们有:)()(nhn⇒δ或者说:{}{}LL,,,0001210hhh⇒,,,,若系统是时不变系统,就意味单位冲激输入延时一段时间,(比如说,D单位时间),其冲激响应输出将会是大小一样,但延时为D的输出h(n-D)。)()(DnhDn−⇒−δ其中D可以正,也可以负。线性性就意味任意输入的线性组合将会产生同样的线性组合输出。)2()1()()2()1()(−+−+⇒−+−+nhnhnhnnnδδδ更一般性,三个输入的加权线性组合:)2()2()1()1()()0(−+−+nxnxnxδδδ将会产生同样三个输出的加权线性组合:)2()2()1()1()()0(−+−+nhxnhxnhx任意输入序列,{x(0),x(1),x(2),…}可以看作是延时并且权重为单位冲激函数的线性组合。L+−+−+=)2()2()1()1()()0()(nxnxnxnxδδδ上式中,n=0则只有第一项不为零,其余各项为零。n=1则只有第二项不为零,其余各项为零等等。因而得到。IntroductiontoSignalProcessing7L+−+−+=)2()2()1()1()()0()(nhxnhxnhxny或写作:∑−=mmnhmxny)()()((LTIForm)(3.3.2)上式又称为输出函数的LTI形式。其实就是输入序列x(n)与滤波器冲激响应序列h(n)的离散时间卷积。也可以说,