滤波器模型与仿真演示文稿_第1页
滤波器模型与仿真演示文稿_第2页
滤波器模型与仿真演示文稿_第3页
滤波器模型与仿真演示文稿_第4页
滤波器模型与仿真演示文稿_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

滤波器模型与仿真演示文稿当前1页,总共120页。滤波器模型与仿真当前2页,总共120页。引言本章主要讨论滤波器仿真模型的开发。滤波器是组成通信系统的许多子系统中的重要部分。为了便于仿真:模拟滤波器映射数字滤波器。这些映射方法都涉及到近似并且都会在仿真结果中引入误差。本章将探讨许多非常有用的滤波器综合与仿真方法,尤其感兴趣的是这些方法的局限性和固有误差源。根据定义,滤波器具有频率选择性,并且具有有限时间冲激响应或者无限时间冲激响应。当前3页,总共120页。由于滤波器具有频率选择性,它们引入了记忆,而由于这种记忆,需要滤波器过去的输入和/或输出来计算给定时刻的滤波器输出。因此,滤波器需要存储,而存储和恢复采样值会大大地增加仿真程序的计算量,而这就会增加仿真程序的运行时间。因此,我们将寻求较好的仿真结构以获得减少计算量的算法。本章的目的并不是要详细描述数字滤波器的设计方法。本章的目的是回顾一些在仿真中最有用的方法,并提供几个简单的例子,从这些例子的结果中,读者将体会到通常出现在仿真应用中的近似误差。当前4页,总共120页。一、概述如图5-1所示为用于开发数字滤波器的一些方法。数字滤波器的经典综合方法通常都是基于模拟滤波器原型之上的。在这种情况下,仿真模型所要求的数字滤波器的设计,从模拟滤波器的S(拉普拉斯)域传递函数着手,来寻求等价的数字滤波器。于是,问题就退化为寻找在某种合适意义上等价于模拟原型的数字滤波器。等价的基本方法是基于时域判据或频域判据来衡量其等价性。尽管我们提到滤波时通常会想到定义在频域的频率选择特性,但时域判据经常用到,并且能给出有效而有用的滤波器设计。通过要求数字滤波器的输出与作为设计基础的模拟原型的采样输出相匹配,来运用时域判据进行滤波器的设计。当前5页,总共120页。当前6页,总共120页。基于时域判据的两种基本综合方法:冲激不变和阶跃不变数字滤波器。“冲激不变法”是使数字滤波器的冲激响应与模拟原型的冲激响应的采样相匹配的一种设计方法。“阶跃不变法”则是数字滤波器的阶跃响应与对应的模拟原型滤波器阶跃响应的采样相匹配。采用冲激或单位阶跃之外的“测试信号”,可得到许多其他设计方法。我们将可以看到,如果模拟原型和得到的数字滤波器在时域上是等价的,则它们在频域上也近似等价。当前7页,总共120页。将模拟原型映射到数字等价模型最常用的方法是通过双线性z变换。双线性z变换的综合方法严格地讲是一种代数方法,它允许对频率响应上的点进行匹配,使得模拟原型和所得数字滤波器在某些指定频率值上具有相同的频率响应(包括幅度和相位)。双线性z变换法以引入非线性频率畸变(Warping)为代价消除了混叠误差。双线性z变换滤波器在仿真中已经得到了广泛的应用。当前8页,总共120页。基于模拟原型的综合方法给出无限时间冲激响应(IIR)数字滤波器。因为模拟滤波器的冲激响应会渐近趋于零,但严格地说,这种冲激响应在持续时间上是无限长的。为了获得用于仿真程序的有限时间冲激响应(FIR)数字滤波器,由标准的IIR设计方法所产生的冲激响应可能需要截短。通过在FIR滤波器的冲激响应中包含足够多的项数,由截短引起的误差可以降低到一个允许水平下。当前9页,总共120页。数字滤波器的一个重要特性是,在没有对应的模拟滤波器时也可设计数字滤波器。在这类滤波器中,最重要的滤波器是允许近似给定的幅度响应,而要保持一个完全线性的相位响应,这种滤波器为FIR滤波器,可通过横向延时线(TDL)结构实现。FIR滤波器最基本的设计方法是将以采样频率为周期的期望幅度响应展开成为傅里叶级数,所得傅里叶级数的系数确定了数字滤波器的冲激响应。当前10页,总共120页。快速傅里叶变换(FFT)可用于完成这项运算。它是频率采样的一个例子—因为在各频率点上对期望频率响应进行“采样”,对这些频率采样点进行傅里叶反变换(IFFT)之后,就获得了滤波器的时域冲激响应。将滤波器的输入信号与冲激响应进行卷积运算,就实现了仿真滤波器模型并且获得了滤波器的输出信号。计算机辅助设计(CAD)方法:第一种给出IIR滤波器,而另一种则给出线性相位FIR滤波器。当前11页,总共120页。二、IIR与FIR滤波器数字滤波器通常根据冲激响应的持续时间分为IIR滤波器和FIR滤波器。和冲激响应分类紧密联系的是滤波器的实现或结构。下面我们先来看不同的滤波器模型。(一)IIR滤波器线性数字信号处理器(数字滤波器)计算过去的N个输出采样点y[n-k](1≦k≦N)、当前的输入采样点x[n],以及过去的N个输入采样点x[n-k]((1≦k≦N)的加权和作为当前的输出采样点y[n]。也就是说,根据过去的输入信号及输出信号计算当前输出信号算法如:当前12页,总共120页。我们将会从仿真程序中看到实现式(5-1)所定义的计算的高效算法。如果式(5-1)中的任何权值bk或ak(k≧1)具有非零值,处理器就会有记忆,因而具有频率选择性,我们称之为“滤波器”。在时变系统中,其中的一个或多个权值还会是序数n的函数。对(5-1)式两边进行z变换,可以得到传递函数H(z)。记住,z变换是一种线性运算,和的变换等于变换的和,k个采样周期的延时等价于乘以因子z-k。由此有当前13页,总共120页。此即线性时不变滤波器传递函数的一般形式。我们通常对所研究的滤波器的冲激响应以及频率响应感兴趣。冲激响应(记为h[n])是传递函数H(z)的逆Z变换,用exp(j2fT)替代传递函数中的变量z,就可得频率响应。也即当前14页,总共120页。数字滤波器的冲激响应记作h[n],只要令x[n]=[n]就可得到它。这里由于式(5-1)的递归性(y[n]是y[n-1]的函数),冲激响应h[n]通常是无限长的,因此称之为IIR滤波器。注意,冲激响应h[n]是序数n的离散函数,而频率响应是连续变量f的连续函数。当前15页,总共120页。(二)FIR滤波器若在式(5-1)或其等价式(5-3)中,对于k≧1有ak=0,则得到FIR滤波器。FIR数字滤波器的传递函数如下:其对应的冲激响应如下:当前16页,总共120页。仅在取值范围0≦n≦N内,冲激响应具有非零值。因此,冲激响应最多有N+1个非零项,它是有限长的。由输入序列x[n]产生滤波器输出序列y[n]的算法是离散卷积运算:在式(5-1)中,k>0时令ak=0,也可直接得到以上结果。当前17页,总共120页。(三)综合与仿真在仿真程序中使用滤波器涉及两种截然不同的运算操作。第一种叫做综合。在综合运算中,给定了滤波要求,并确定了满足这些要求的滤波器的传递函数H(z),这就建立了仿真模型。综合运算所得结果通常表示成两个向量:一个包含分母系数ak,另一个则包含分子系数bk。这两个向量定义了传递函数式(5-3),以及给定滤波器的输入产生滤波器输出的算法。综合操作的计算量通常不大,因为滤波器的综合运算只进行一次,因而发生在仿真程序主循环的外部。第二种运算操作涉及在每一个仿真时间步(即仿真时钟的每个滴答)计算滤波器的输出。这种运算在蒙特卡罗仿真程序中要重复进行数百万次,甚至数十亿次,因此,要尽可能地减小这种运算的计算量。下节考虑的转置滤波器结构就是为应对这方面问题。当前18页,总共120页。三、IIR与FIR滤波器的实现现在简要考察一下数字滤波器在仿真程序中的实现方式。目标是最小化计算量,从而使仿真程序的运行时间最短。(一)直接II型与转置直接II型的实现常见的IIR滤波器基本结构:直接I型、直接II型、级联型、并联型等。在仿真程序中实现IIR数字滤波器的一种有效方法是采用转置直接II型结构。如图5-2所示为转置直接II型滤波器结构的信号流图,及推导出这种结构的直接II型结构的信号流图。我们从直接II型结构着手,因为它可以直接实现由表达式(5-1)所定义的差分方程。当前19页,总共120页。由于运行速度快,转置直接II型结构是滤波器仿真中最常使用的结构,而且它可以很容易地从直接II型滤波器的结构推导出来。由给定滤波器结构产生转置直接II型滤波器规则:1.重画原有(直接II型)信号流图,保持结构(所有链路的相对位置不变)。2.将每条链路中的信号流反向。3.对新链路赋上与原有链路相同的运算(乘以一个常数、时延等)。4.如有需要,翻转(从左到右)新构造的信号流图,使得输入/输出信号流的方向与原始信号流图一致(注:信号流的方向通常是从左向右)。当前20页,总共120页。当前21页,总共120页。新获得的信号流图叫做转置直接II型(DFII)结构,其传递函数与原始信号流图相同。[逐点处理]为了展现转置直接II型结构的优势,考虑如图5-2所示的四阶转置直接II型滤波器。(可以很方便地扩展到高阶滤波器。)给定输入采样x[n],要计算输出信号y[n],第一步,计算状态变量wj[n],J=0,1,…,4。注意,对于四阶滤波器,在我们的公式中有五个状态变量。这五个状态变量的计算式如下:当前22页,总共120页。接下来考虑上述这些方程所定义的转置结构在计算方面的优势。表达式(5-9)到式(5-13)中的状态变量可以依次计算。例如,注意到因为w1[n-1]可以通过上一次仿真循环获得,于是给定输入x[n]就可以计算出w0[n]。一旦已知了w0[n],就可以计算出w1[n]。继续计算,我们看出wj[n]仅取决于wk[n],这里k<j。这样,每个状态变量的计算只需要知道在它之前计算出来的量就可以了。事实上,可用如下MATLAB代码在一个仿真循环中实现式(5-9)到式(5-13):当前23页,总共120页。w1=0;w2=0;w3=0;w4=0;%initializestatevariablesfork=1:npts%beginningofsimulationloopw0=w1+b0*x;wl=-al*w0+w2+b1*x;w2=-a2*w0+w3+b2*x;w3=-a3*w0+w4+b3*x;w4=-a4*w0+b4*x;y=w0;End%endofsimulation-loop当前24页,总共120页。以上代码中,x和y分别代表滤波器的当前输入x[k]和当前输出y[k]。注意到式(5-9)到式(5-13)所示的一个采样步长的延时,可以通过状态变量的计算顺序来实现,这里不需要存储和恢复,因此,这种算法要比基于其他结构的算法快,这也是MATLAB子程序filter要基于转置直接II型结构的原因。同时,注意到状态变量w1,w2,w3,w4在首次进入仿真循环之前必须进行初始化,这一初始化导致滤波器输出一个瞬态响应。一般必须执行仿真循环多次之后,才能从仿真的输出中采集到有用数据,这段时间通常称为“稳定时间”,其大小为滤波器带宽倒数的若干倍。下面讨论这些计算的向量形式。[块处理]当前25页,总共120页。数字滤波器的状态方程通常使用矩阵形式来表达。当滤波器具有多个输入及多个输出时,状态变量的矩阵形式非常有用。但目前我们感兴趣的主要是具有单输入x[n]与单输出y[n]的滤波器。单输入滤波器的一般表达式如下:滤波方程其中W[n]和W[n-1]是k×1的列向量,分别表示当前及过去的状态变量。Fc和Fd是k×k的系数矩阵,B是k×l的列向量,用来将输入x[n]耦合到状态变量。单输出信号y[n]的输出方程为:当前26页,总共120页。这里C是一个l×k的行向量。方程(5-9)到(5-13)可以表示为矩阵形式:这里术语“可算”的意思不是指一定要具有这种形式才能在给定输入信号的情况下计算出输出信号。这点很容易看出来,因为只要简单地重新标记状态,就会破坏原来矩阵的上三角结构。相反,术语“可算”只是意味着如式(5-9)到式(5-13)一样,状态变量可以依次计算出来。可以证明,存在这种可算形式的充分必要条件是:每一个闭合回路中的路径上至少含有一个延时单元,即z-1。当前27页,总共120页。稍加思索,可知状态变量可以依次计算出来,是因为式(5-16)中关联wj[n]和wk[n]的矩阵Fc,在主对角线及其上方元素全部为零,具有这种属性的信号流图称为“可算图”。使用MATLAB的一个方便之处在于:对于大量不同的模拟原型,都可以轻易地算出滤波器系数ak和bk。尽管生成的这些滤波器系数通常会用于MATLAB子程序filter(一个为分块处理开发的子程序),但是使用下列三行简单的MATLAB程序,就可以逐个采样点地仿真IIR滤波器。out=b(1)*in+sreg(1,1);%computefilteroutputsreg=in*b-out*a+sreg;%updateshiftregistercontentssreg=[sreg(1,2:(order+1)),0];%cycleshiftregister当前28页,总共120页。其中a和b在仿真循环外确定。在上面的代码中,参数sreg代表长度为order+1的移位寄存器,其中order是滤波器阶数。上述方法的一个优点是:可使用MATLAB滤波器综合子程序,如butter(巴特沃思滤波器)、chebyl(切比雪夫1型滤波器)及elliptic(椭圆滤波器),来计算滤波器系数向量a和b。必须小心以确保存放分子系数和分母系数的向量保持相同的长度,如果这两个向量长度不相等,较短的向量应该进行补零,使之与较长向量的长度相等。例5-1为了说明前面谈到的方法,考虑以下MATLAB程序代码。它采用了块处理和串行(逐个采样点)处理方法,来确定一个四阶巴特沃思滤波器的冲激响应;上面所给程序的运行结果如图5-3所示。可以看到,块处理和串行处理方法得到的结果是相同的。■当前29页,总共120页。%File:c5_filterex1.mn=40; %numberofsamplesorder=4; %filterorder[b,a]=butter(order,0.1); %prototype%blockimplementation=======================in1=[1,zeros(1,n-1)]; %inputvectorout1=filter(b,a,in1); %outputvector%pointimplementation=======================sreg=zeros(1,order+1); %initializeshiftregisterfork=1:nifk==1in=1; %impulseinputelsein=0;endout=b(1)*in+sreg(1,1); %determineoutputsreg=in*b-out*a+sreg; %updateregistersreg=[sreg(1,2:(order+1)),0]; %shiftout2(k)=out; %createoutputvectorend%===========================subplot(2,1,1)index=0:n-1;stem(index,out1)xlabel('SampleIndex')ylabel('BlockProcessing')subplot(2,1,2)stem(index,out2)xlabel('SampleIndex')ylabel('SerialProcessing')当前30页,总共120页。图5-3块处理与串行处理的比较当前31页,总共120页。(二)FIR滤波器的实现常见的FIR滤波器基本结构:横截型(卷积型、直接型)、级联型、频率抽样型等。令ak=0,k≧1,可从图5-2直接得出FIR数字滤波器的实现策略。所得到的两种结构很明显,如图5-4所示,通常称之为抽头延时线或横向延时线(TDL)结构,因为它们用带抽头的延时线(级联式z-1单元)来实现,其中的抽头乘上了权值bk。当前32页,总共120页。当前33页,总共120页。四、IIR滤波器:综合方法与滤波器特性无限时间冲激响应(IIR)滤波器通常根据模拟原型(巴特沃思、切比雪夫、椭圆等)来进行设计,并采用递归结构实现。可能除射频端以外,现代通信系统已经不像几十年前那样地依赖于模拟原型。许多现代通信系统,比如软件无线电,广泛采用DSP技术来实现系统的构建模块(包括滤波器)。在基于DSP技术的系统中,开发模拟原型对应的数字等价并不存在什么困难,因为用于物理硬件滤波器已经是数字形式了,因此,以模拟原型为起点的数字滤波器综合的经典方法,就变得不太重要。当前34页,总共120页。然而,根据模拟原型进行的设计仍然有着很多的应用,所以这些方法还是值得考虑的。人们已经为IIR滤波器开发了一些计算机辅助设计方法,这里只讨论其中一种。由于本章目的在于讲解基础方法及讨论这些方法用于仿真时所引入的误差,所以仅考虑这些方法非常简单的应用。(一)冲激不变滤波器

假设数字滤波器的单位冲激响应,除了幅度比例有差别外,等于模拟滤波器冲激响应的采样,这样的数字滤波器就称为模拟滤波器的冲激不变实现。也就是说,该数字滤波器的传递函数可定义为当前35页,总共120页。这里L-1(·)表示拉普拉斯反变换,Z(·)表示z变换,Ha(s)表示模拟原型的传递函数,T表示采样周期,同时还是幅度比例系数。为了阐明冲激不变方法,这里考虑最简单的模拟滤波器,即注意,这是一个一阶低通滤波器,其直流增益(f=0)为1。例5-2由式(5-17),首先对Ha(s)进行拉普拉斯反变换。由此得到如下冲激响应:当前36页,总共120页。其中,U(t)为单位阶跃函数,表示所得的滤波器是因果的。在进行z变换之前,要对冲激响应在采样时刻t=nT进行采样,于是有Ha[n]的z变换为进行求和并乘上采样周期得:此即式(5-18)的冲激不变等价。该滤波器的频域特性分析将在例5-5中探讨。■当前37页,总共120页。(二)阶跃不变滤波器阶跃不变滤波器常用于仿真系统中。对阶跃不变滤波器而言,数字滤波器的单位阶跃响应等价于模拟滤波器阶跃响应的采样。模拟滤波器阶跃响应的频域表示式为Ha(s)/s,其阶跃不变滤波器的传递函数如下:注意,式(5-23)左边是传递函数为H(z)的数字滤波器对采样后的单位阶跃信号的响应,式(5-23)右边表示原型模拟滤波器单位阶跃响应采样的z变换。当前38页,总共120页。例5-3在这个例子中,再次采用(5-18)式作为模拟原型。这个模拟原型的阶跃响应如下:使用部分分式展开可得取拉普拉斯反变换,并在t=nT采样得当前39页,总共120页。再进行z变换得阶跃不变数字滤波器的传递函数为:将上式写成式(5-3)定义的标准形式有该滤波器的频域特性分析将在例5-5中探讨。所得结果将与冲激不变法的结果进行比较。■当前40页,总共120页。(三)双线性z变换滤波器双线性z变换滤波器可能是仿真程序中使用最普遍的滤波器了,这有几方面的原因。首先,采用双线性z变换方法的数字滤波器综合很直观并且完全是代数形式的。另外,可以看到双线性z变换不会表现出混叠现象。综合方法双线性z变换综合方法采用简单的代数变换,将模拟原型Ha(s)映射为一个数字滤波器。具体来说,该数字滤波器的传递函数H(z)定义为当前41页,总共120页。这里C为常数。下文很快会讨论确定合适的C所用的方法,因为Ha(s)通常定义为s的多项式之比,式(5-31)定义的代数映射刚好给出H(z)的合适形式,z-1的多项式之比。如上节所讨论,就得到了该滤波器的实现。为了说明所得数字滤波器的传递函数具有理想的属性,使用exp(SdT)来替换双线性Z变换中的变量z,这里Sd是数字滤波器的复频域变量,得:用j2fa替换s,用j2fd替换sd,有当前42页,总共120页。这定义了原型模拟滤波器和所得数字滤波器的频率响应之间关系。调节C值使得对任意采样频率都有fa=fd的方法称为预畸变。fa和fd之间的变换关系很显然是非线性的。在建立通信系统和其他类型系统仿真模型的过程中,通常都希望在将模拟滤波器映射成其数字等价时保持传递函数的形状不变,这包括幅度及相位均不变。而保持传递函数形状不变,要fa和fd之间的转换关系尽可能为线性。由于当x很小的时候,tan(x)=x,近似线性变换要求fdT<<1或当前43页,总共120页。这里fd落在我们感兴趣的频率范围内,而fs是采样频率。满足fd≈fa的近似线性关系所需C值,也很容易确定。线性关系要求若还要求fd≈fa,则有不幸的是,通常需要非常高的采样频率,才能够使fd≈fa在一定的频率范围内(比如滤波器的带通频率范围)。但这通常会导致仿真运行时间是不现实的。当前44页,总共120页。例5-4为了说明双线性Z变换综合方法,这里再次使用式(5-18)定义的简单一阶模拟原型。根据定义,双线性Z变换滤波器的传递函数:当前45页,总共120页。例5-5这个例子将对前面三个例子中设计的三种滤波器的响应进行比较。假设采样频率为100Hz(T=O.Ols),参数a为2×10,从而使模拟滤波器的3dB频率为lOHz。作了以上假设后可以得因此,从式(5-22)得,冲激不变滤波器的传递函数为:从式(5-30)得,阶跃不变滤波器的传递函数为:当前46页,总共120页。下面将给出双线性Z变换滤波器的两种形式。第一种,如果不采用频率预畸变,那么模拟滤波器原型与对应数字滤波器的幅度响应在低频段非常吻合,有将C,a的值代入式(5-41),得现假设选择C值,使得频率响应在模拟滤波器的3dB频率处相匹配。在这种情况下有当前47页,总共120页。现假设选择C值,使得频率响应在模拟滤波器的3dB频率处相匹配。在这种情况下有现假设选择C值,使得频率响应在模拟滤波器的3dB频率处相匹配。在这种情况下有当前48页,总共120页。采用下面的MATLAB代码可以产生冲激不变滤波器、阶跃不变滤波器,以及由式(5-47)所定义的第一个双线性Z变换滤波器的幅度响应。%File:c5_threefilters.mT=0.01;f=0:0.1:50;z=exp(-i*2*pi*f*T);%see(5.4)a0=0.239057;a1=0.239057;b1=0.521886;%bilinearinvariantnum=a0+a1*z;den=1-b1*z;ampx=abs(num./den);a0=0.628319;b1=0.533488; %impulseinvariantnum=a0;den=1-b1*z;ampy=abs(num./den);a0=1.0;a1=0.533488;b1=0.533488; %stepinvriant num=(a0-a1)*z;den=1-b1*z;ampz=abs(num./den);plot(f,ampx,f,ampy,f,ampz)xlabel('Frequency-Hz')ylabel('AmplitudeResponse')%Endofscriptfile.当前49页,总共120页。运行结果如图5-5所示。注意,阶跃不变滤波器和双线性Z变换滤波器都具有单位直流增益。由于混叠的影响,冲激不变滤波器的直流增益比1大许多。同时也要注意到,双线性z变换滤波器在奈奎斯特频率(fs/2)处存在一个零点,这是因为对应的模拟原型在f=∞处有一个零点,而这个零点在双线性之变换时被映射到了奈奎斯特频率处。■当前50页,总共120页。图5-5幅度响应比较图当前51页,总共120页。例5-6在前面各例子中开发的滤波器仅基于一个非常简单的一阶原型,而且ak和bk的值不必利用计算机辅助就能确定。在这个例子中,考虑一个五阶椭圆滤波器,具有1dB通带波纹和一个最小20dB的阻带衰减。虽然肯定可以采用前面例子讨论的分析方法来确定滤波器系数,但是由于模拟原型传递函数的复杂性,这样做相当费力。不过,MATLAB信号与系统工具箱中具有大量的数字滤波器综合工具,其中就有冲激不变和双线性z变换数字滤波器设计的子程序。进行五阶椭圆滤波器综合设计的MATLAB代码如下页示:当前52页,总共120页。%File:c5_ellipexam.mfs=100; %setsamplingfrequencyfc=20; %setcuttofffrequencyf=0:0.1:50; %definefrequencyvector[b,a]=ellip(5,1,20,2*pi*fc,'s'); %synthesizeellipticfilterh=freqs(b,a,2*pi*f); %amp.resp.ofanalogfilter[bz1,az1]=impinvar(b,a,fs); %impulseinvariantdigitalfilterh1=freqz(bz1,az1,f,fs); %amplituderesponseofabove[bz2,az2]=bilinear(b,a,fs); %bilinearzfilter(notprewarped)h2=freqz(bz2,az2,f,fs); %amplituderesponseofabove[bz3,az3]=bilinear(b,a,fs,fc); %bilinearzfilter(prewarped)h3=freqz(bz3,az3,f,fs); %amplituderesponseofabovesubplot(211) %subplot1plot(f,abs(h),f,abs(h1)) %plotxlabel('Frequency-Hz') %labelxaxisylabel('AmplitudeResponse') %labelyaxissubplot(212) %subplot2plot(f,abs(h2),f,abs(h3)) %plotxlabel('Frequency-Hz') %labelxaxisylabel('AmplitudeResponse') %labelyaxis当前53页,总共120页。注意这里产生了四种频率响应。首先产生了模拟原型的幅度响应,作为比较的基础。其次产生了冲激不变数字滤波器的幅度响应,并与模拟原型的幅度响应画在一起。最后综合产生了两种双线性z变换数字滤波器,一种采用频率畸变而另一种未采用频率畸变,把它们画在一起,用来说明频率畸变的影响。在图5-6中比较了模拟原型、冲激不变滤波器和两种双线性z变换的幅度响应,这里把它们分别画在两张图中以避免混乱。上方的图对模拟原型和冲激不变数字滤波器的幅度响应进行了比较。注意,除了带宽,两者差别很大,原因在于混叠误差。椭圆滤波器存在明显的混叠误差,因为它的阻带特性使得其模拟原型的幅度响应不是带限的,这一点,从滤波器的通带和阻带的幅度都有所升高就可以看出。当前54页,总共120页。图5-6幅度响应的比较当前55页,总共120页。上页的图表明双线性之变换综合方法的性能要好得多。如果没有使用频率畸变的话,截止频率就会像预计的一样,从20Hz降低到18Hz左右。将数字滤波器的截止频率预畸变到模拟原型的截止频率,就可以在大部分频率范围内使幅度响应与模拟原型的幅度响应很好地匹配。然而,它们之间有一个明显的差别。在奈奎斯特频率(fs/2=50Hz)处,模拟原型的幅度响应是0.1,对应于20dB衰减,而双线性之变换数字滤波器的幅度响应为0(-∞dB)。模拟滤波器在f=∞处有一个零点,经过双线性之变换以后,这个零点被映射到了奈奎斯特频率处。■当前56页,总共120页。特殊情况:梯形积分法梯形积分法是一种重要的积分算法,经常用于仿真程序中。通常,离散时间积分由如下的表达式定义:这里y[n]和y[n-1]分别表示积分器在序数n以及n-1时的输出信号,△(n-1,n)表示在时间增量(n-1)T<t≦nT区间内加到积分上的增量面积。增量面积如图5-7所示,其值如下当前57页,总共120页。对式(5-54)两边进行z变换,可得梯形积分器的传递函数,结果如下:如果基于双线性z变换综合方法设计一种积分算法,其结果为或者,由于积分运算等价于除以s,于是有当前58页,总共120页。图5-7梯形积分法当前59页,总共120页。上式与式(5-55)表示的梯形积分法完全相同。对应于梯形积分法的转置直接II型实现的信号流图如图5-8所示。注意到除了有一个幅度比例系数T/2之外,所有乘法全部是单位型的。其MATLAB仿真代码也示于图5-8中。可以看到,这里的延时也是通过状态w1和w2的计算顺序来实现的。梯形积分法只是用于仿真程序的众多不同积分算法中的一种。有了多种不同的算法,我们就能够在速度/性能方面进行各种折中。当前60页,总共120页。(四)IIR数字滤波器的计算机辅助设计过去数十年来,人们已经为IIR和FIR数字滤波器开发了多种计算机辅助设计方法。FIR方法比IIR方法得到了更为广泛的应用,但是由于IIR方法能给出较小型的结构(较少的延时单元),它有时也能派上用场。计算机辅助设计方法的一个优点在于:无须等价模拟原型就可以开发数字滤波器;另外,使用计算机辅助设计,也便于快速而系统地研究实现中的折中,比如在复杂度(要求的系数个数)和精度(实际与目标幅度响应之间的误差)。当前61页,总共120页。开发IIR滤波器常用的一个方法是:通过调整滤波器系数来获得期望响应的最佳拟合。在最常用的方法中,人们指定理想的滤波器特性,一般是期望滤波器的幅度响应以及滤波器的阶数N,这导致了一个带约束的最优化问题,其中阶数N为约束,目标是根据最小均方误差准则确定最佳拟合。下面举一个例子进行说明。例5-7我们将设计一个信道滤波器,具有如图5-9所示特性。注意到这个滤波器通过两个信道,其中只有一个转换为直流。还注意到图5-9中的频率根据奈奎斯特频率(采样频率的一半)进行了归一化。根据这个归一化后频率fN=l/(fs/2),滤波器幅度响应可定义为当前62页,总共120页。上面Ad(f)的表达式中未包含的三个频带是过渡频带,在图5-9中以深黑色区域标识出来。当前63页,总共120页。设计这个滤波器的MATLAB程序如下:%Program:c5_yw.morder=20, %degreeofpolynomialsf=[00.10.120.230.250.350.371]; %frequencypointsamp=[11001100]; %amplituderesponse[b,a]=yulewalk(order,f,amp); %synthesizefilterfreqz(b,a) %displayresults%Endofscriptfile.我们注意到,本例产生了一个20阶滤波器,使得H(z)的分子及分母多项式都是z-1的20次多项式,这个程序的运行结果如图5-10所示。注意这里的阻带衰减约为30dB或者更高。对通带进行了合理的整形处理,通带上的相位响应也近似为线性的。要判断这个滤波器是否为式(5-58)所定义理想响应的满意近似,可能需要对使用该滤波器的系统进行仿真。增加滤波器阶数可以减小近似误差,但是代价是提高了复杂度,从而增加了仿真程序的运行时间。■当前64页,总共120页。图5-10-1IIR滤波器的计算机辅助设计结果(20阶)当前65页,总共120页。图5-10-2IIR滤波器的计算机辅助设计结果(40阶)当前66页,总共120页。(五)IIR滤波器的误差源本节我们总结一下使用IIR滤波器近似模拟滤波器的方法所带来的误差源。我们已经看到误差源取决于所采用的综合方法,而在仿真中采用很高的采样频率,就可以在很大程度上减小这些误差,但是过高的采样频率将不必要地增加仿真程序的运行时间。跟往常一样,仿真采样频率的选择同样涉及到在精度和仿真程序运行时间两者间进行折中。误差源小结如表5-1当前67页,总共120页。五、FIR滤波器:综合技术与滤波器特性如果一个滤波器的冲激响应是有限长的,或者已将无限长冲激响应截短为有限长的,则离散时域的滤波器输出信号可表示为采用标准DSP表示法,可写为:或写成Z变换形式当前68页,总共120页。定义FIR数字滤波器的式(5-60),是模拟(连续时间)滤波器卷积积分的离散形式。注意到式(5-60)、式(5-61)和式(5-1)、式(5-3)在ak=0,k1时定义的滤波器模型是相同的。滤波器为FIR(有限时间冲激响应),是因为它的冲激响应h[n]至多只有N+1个非零项,因为k≥1时ak=0,FIR滤波器没有反馈通道。式(5-60)所定义的时域卷积运算可以用MATLAB函数filter进行仿真。FIR滤波器的优点:

1.在一个通信系统中,并非所有的滤波器都可以使用拉普拉斯变换域的传递函数来表示,因此无法直接应用上节所讨论的IIR滤波器方法。属于这种情况的两个重要的滤波器是:平方根升余弦(SQRC)脉冲成形滤波器和Jakes多普勒滤波器。而采用FIR设计方法则可以轻易地实现这些滤波器的仿真。当前69页,总共120页。2.在许多仿真应用中,滤波器数据可能是以测量的频率响应或脉冲响应的形式经验性地给出。采用FIR方法仿真这些滤波器要容易得多。虽然有其他的方法可以将频率响应数据拟合为ARMA(自回归--滑动平均)模型,但是当频率响应数据不怎么平滑的时候,所得的近似结果不够理想。

3.采用FIR滤波器,可以给定任意幅度响应和相位响应,而且它们可以是相互独立的。因此可以仿真诸如具有线性相位响应的理想“砖墙”滤波器。

4.FIR滤波器没有反馈,因此总是稳定的。当前70页,总共120页。FIR仿真模型的缺点:那就是它的计算效率不如IIR滤波器实现的高。直接实现式(5-60)定义的卷积运算,产生一个输出采样点就需要进N次(复数)乘法和加法运算,如果冲激响应非常长,比如说N>1024点的话,FIR算法运行起来比典型的IIR滤波器算法要慢得多。对于IIR滤波器而言,产生一个输出采样点需要的加法和乘法运算的次数是由滤波器的阶数决定的,而不同于FIR滤波器,由冲激响应的长度决定。

通过使用DFT/FFT算子来进行卷积运算,可以改进FIR模型的计算效率。当采用DFT/FFT算子的时候,关键要注意以下几点:

1.DFT/FFT运算具有固有的周期性,会产生圆周或周期卷积输出。为了获得线性卷积输出,输入序列以及冲激响应序列必须进行填零补齐(Zero-padded)。为了获得最高的计算效率,经过填补的向量扩展后的长度必须是2的幂,以便使用基--2(Radix-2)FFT算法。

当前71页,总共120页。

2.如果输入序列很长,通常把输入序列分成几个较小的互不重叠的子块,并对每个输入子块分别进行卷积,以得到对应的输出子块,然后将这些输出子块进行适当的交叠再相加,就得出总的输出。如果输入子块的长度相对较短,比如说少于128个采样点,输出子块通常可以采用“单触发”方式来计算。要不然,则推荐使用叠加的方法。可以使用MATLAB函数fftfilt来实现基于DFT/FFT叠加法的卷积。

3.基于DFT/FFT的卷积是一种分块处理运算。只有在输入采样点的数量累积到足够进行DFT/FFT运算之后,才可以产生输出子块的第一个采样点。由于这种内置的时延,通常情况下DFT/FFT滤波器不能用于仿真反馈循环中的滤波器。当前72页,总共120页。众所周知,时域卷积与基于DFT运算的卷积的计算效率之比值跟log2N/N成比例。如果冲激响应长度少于128个采样点的话,时域卷积与基于DFT/FFT的卷积在计算量上没有太大的区别。如果对冲激响应的长度进行截短,FIR滤波器方法(包括时域卷积和基于DFT/FFT的卷积)的计算效率可以得到改进。截短等价于使用一个长度为N个采样的窗函数w[k]与冲激响应h[k](k=0,1,2,…)相乘。通常选择N值使得该窗函数内至少包含有h[n]总能量的98%,即最简单的窗函数就是矩形窗函数,也即当前73页,总共120页。也可采用许多其他的窗函数。时域的截短(加窗)等价于频域的卷积,即HT(f)=H(f)W(f),这里惯常地使用表示卷积。理想情况下,窗函数的频域表达式应该是W(f)=(f),这样,与冲激信号进行卷积就不会改变H(f)。频域冲激对应于时域的常数,但其区间是无限长而不是有限长的,这样,频域的理想特性就会导致时域的非理想特性。反之亦然。窗函数的选择因此也是一种折中,所得窗口同时也引入了失真。合适地选择窗函数,就可以使这种失真最小化。理想的窗函数应该具备以下特性(记住,在理想情况下我们想要一个频域上的冲激信号):

1.频域的“窄主瓣”包含大多数能量。2.小旁瓣。最常用的窗函数有矩形窗、汉明窗以及Kaiser窗。选择窗函数的时候,应该在加窗引起的信号失真和计算量之间进行折中考虑。当前74页,总共120页。(一)根据幅度响应进行的设计

FIR滤波器的基本设计方法基于这样一个事实:滤波器的频率响应(包括幅度和相位)和单位冲激响应是一个傅里叶变换对。我们推导单位冲激响应的一般做法是,给定期望的幅度响应A(f),再计算其傅里叶反变换。通常给定目标幅度响应为实偶函数,这样所得的单位冲激响应也是实偶函数型的。因为冲激响应是偶函数,是非因果的,而为了在时域上实现系统,必须对所得的冲激响应进行截短使其为有限长,还要在时间轴上进行平移,使之成为因果函数。截短时,必须注意以避免引入显著的误差,使用合适的窗函数通常可以减小这些误差的影响。在时间轴上平移时,相当于使滤波器获得一个大小等于该时间平移长度的群时延的线性相位响应,该方法可产生具有任意幅度和线性相位响应的滤波器。当前75页,总共120页。如果人们想要一个同时具有目标幅度响应和相位响应的滤波器,就要给定一个复传递函数。假设对冲激响应进行截短操作后,所引入误差不太显著,则除了一个定常群时延外,最终得到的滤波器可以同时满足目标滤波器对幅度响应和相位响应要求数字滤波器的幅度响应,是频率f的连续函数,而且是具有以采样频率为周期的周期函数,可以表示为傅里叶级数。这些离散的傅里叶级数的系数,给出了期望数字滤波器的冲激响应。正如我们将在接下来的两个例子中所看到的那样,正式确定期望的频率响应的傅里叶反变换,或者对期望的幅度响应采样点序列进行FFT反变换,都可以获得所要求的冲激响应。这些方法都相当基本,但如果小心使用会得到有用的滤波器设计。当前76页,总共120页。由于数字滤波器的幅度响应具有以采样频率为周期的周期性,其幅度响应可展开为傅里叶级数,如下:这里的h[n]表示傅里叶级数的系数,M表示冲激响应的长度,而T=1/fs。注意,式(5-64)刚好是式(5-4)与式(5-6)的联立结果,用于从传递函数H(z)获得稳态频率响应。下面假设M=2L+1。利用这一替换并改变序数k=n-L,可得:当前77页,总共120页。或又可以改写成如下形式:显然h1[k]=h[k+L],这是由式(5-64)所定义的因果滤波器的冲激响应平移L个采样点后得到的。注意,由式(5-68)定义的滤波器不是一个因果滤波器。然而它非常便于采用基本的傅里叶变换法进行设计,并且只要简单地对冲激响应进行合适的平移就可以变为因果的。当前78页,总共120页。假设一个滤波器将具有给定幅度响应H1(ej2fT)=A(f)。在式(5-68)两边同时乘以exp(j2mfT)得很显然,由h[n]和h1[n]所确定的滤波器的幅度响应是相同的,而传递函数只是相差一个由式(5-67)所定义的线性相位平移。因此该设计过程基于式(5-68)。在一个仿真带宽上,即H1(ej2fT)的一个周期内,对式(5-69)两边同时积分得当前79页,总共120页。进行积分,并注意fsT=1,得将这个结果代入式(5-70)得这是我们的基本设计方程。

例5-8在这个例子中我们设计一个数字低通滤波器,来近似一个带宽为fN=fs/2的理想数字滤波器,这里fN为奈奎斯特频率,fs为采样频率,是介于0和1之间的一个参数。因此,期望的幅度响应为当前80页,总共120页。从式(5-73)有由于fsT=1,式(5-76)可以改写为:注意,这里h1[0]=h[L]=下述代码中,我们采用的L=30,=0.3。注意,为了防止当m=0时出现不确定形式,在序数m中加上了eps。将冲激变成因果的所要求的L=30个采样点的平移,是利用MATLAB对向量序数进行操作的方式来完成的。当前81页,总共120页。%File:c5_FIRdesign.mL=30; %2L+1totalpointslam=0.3; %normalizedcutofffrequencym=-L:1:L; %vectorofpointsbp=sin(pi*lam*(m+eps))./(pi*(m+eps)); %impulseresponsestem(0:2*L,bp,'.') %plotimpulseresponsexlabel('Sampleindex')ylabel('Impulseresponse')figure;a=1;freqz(bp,a) %plotampandphaseresponsefigure;subplot(2,1,1) %newfigure [Hw]=freqz(bp,a); plot(w/pi,abs(H));grid; %unwindowedampresponsexlabel('Frequency(normalizedtotheNyquistfrequency=fs/2)')ylabel('|H(f)|(unwindowed)')subplot(2,1,2)w=0.54+0.46*cos(pi*m/L); %Hammingwindowwbp=bp.*w; %applywindow[Hw]=freqz(wbp,a);plot(w/pi,abs(H));grid; %windowedampresponsexlabel('Frequency(normalizedtotheNyquistfrequency=fs/2)')ylabel('|H(f)|(windowed)')%Endofscriptfile.当前82页,总共120页。MATLAB程序产生的第一个输出信号是冲激响应,如图5-11所示。注意,跟先前确定的一样,h[30]=0.3。同时也注意,所得冲激响应关于m=L=30处的中心是偶对称的。用MATLAB命令freqz产生FIR滤波器的幅度响应和相位响应,再用默认的画图模式画出,如图5-12所示。跟预计的一样,所得滤波器具有线性相位响应,因为冲激响应关于其中心偶对称。线性相位平移操作(定常群时延)得自于将冲激响应平移L个采样点而使滤波器具有因果性。幅度响应的符号变换会在阻带范围内导致锯齿状的相位响应。

如图5-12所示,滤波器通带范围内的幅度响应看起来相当平坦。为了验证这一点,采用线性标尺重新画出幅度响应,以避免对数坐标产生的幅度压缩。结果如图5-13的上部所示。当前83页,总共120页。可以看到,在通带范围内有明显的波纹,这是因为进行冲激响应截短操作时,对冲激响应乘以一个矩形窗所造成的。这里的加窗等价于把理想频率响应与sin(f)/f进行卷积(的数值由窗函数的宽度决定)。可以通过采用一个从w[n]=1到w[n]=0较平滑过渡的窗函数,来降低矩形窗所造成的通带波纹。注意,我们希望这里的窗函数在频域上更接近于一个冲激函数。)一种简单而常用的窗函数—汉明窗的权值定义如下当前84页,总共120页。注意,窗函数w[n]必须在时间上平移L个采样点,从而使w[0]成为h[n]的中心。采用汉明窗的结果,如图5-13下方所示。注意,采用汉明窗之后,通带以及阻带波纹都受到了抑制。■图5-11FIR滤波器冲激响应当前85页,总共120页。图5-12幅度响应和相位响应当前86页,总共120页。图5-13加窗效果当前87页,总共120页。例5-9设计一个数字低通滤波器,不仅具有模拟巴特沃思滤波器的幅度响应,而且具有线性相位响应。我们没有该滤波器的等价模拟原型。巴特沃思滤波器通过如下幅度响应定义:这里fc是带宽,或称为3dB频率点,n是滤波器阶数。下一步是对频率响应进行采样,频率响应的采样由下式给出:然后对频率响应采样值进行FFT反变换来产生冲激响应。当前88页,总共120页。%File:c5_firbutter.morder=30; fc=5; %setfilterparametersfmax=100; %setmaxfrequencynpts=256; %setnumberofsamplesf=(0:(npts-1))*(fmax/(npts-1)); %frequencyvectornn=2*npts; %sizeifftH=zeros(1,nn); %initializevectorHa=1./(sqrt(1+(f/fc).^order)); %amplituderesponseH=[Ha0fliplr(Ha(2:npts))]; %evenamplituderesponse[cimp_resp]=ifft(H,nn); %compleximpulseresponseimp_resp=real(cimp_resp); %takerealpartaa=imp_resp(1:npts); %time>=0bb=imp_resp((npts+1):nn); %time<0reimpulse=[bbaa]; %realandevenimp.resp.plot(reimpulse) %plotresult注意,对于N点FFT反变换,在序数值为(N/2)+1到N的范围内,返回的向量中会出现负时间采样点,这时必须重新编写序号,才能得到合适的冲激响应。计算具有巴特沃思幅度响应的线性相位滤波器冲激响应采样代码:当前89页,总共120页。order=1和order=30时的冲激响应如图5-14所示,所得响应是双边指数递减的(双边是因为这里假设幅度响应A(f)为实数)。对于order=30,冲激响应相当接近sinc函数,因为阶数极高的巴特沃思滤波器可以很好地近似理想(brickwall)滤波器。因此,如图5-14所示的结果是正确的。实际上,人们希望通过最大限度地减少表示冲激响应的权值(bk项)的个数,从而最小化仿真程序的计算量。通过最小化权值个数,可以使得乘法运算的数目和抽头延时线(移位寄存器)级数最少。看起来,在order=1的冲激响应中,系数权值都接近于零,因此可以从幅度响应中消除,而对幅度响应产生的影响可忽略不计。在order=30的冲激响应中也是如此(只是程度轻点)。因此人们应该对冲激响应加上矩形窗,具有足够的宽度以包含冲激响应的所有有效项,而抛弃落在窗外的项。■当前90页,总共120页。Order=1Order=30图5-14滤波器综合的结果—冲激响应当前91页,总共120页。(二)根据冲激响应进行的设计通过幅度响应和相位响应特性的指标来综合数字滤波器,是频率采样的一个应用。在许多应用中,已知滤波器冲激响应的解析表达式。此时,对冲激响应进行时域采样,就可以实现FIR滤波器的设计。用于信号传输中成形脉冲的滤波器尤其如此。在这种情况下,数据可以看作是在时间上以一定的脉冲周期T分隔开的冲激序列。对二进制的情况,我们有这里dk=1对应于二进制数1,dk=-1对应于二进制数O。将它通过一个具有冲激响应为p(t)的脉冲成形滤波器,得到以下波形当前92页,总共120页。下例给出两个常见的实例。例5-10用于数据传输的脉冲波形p(t),通常应选择具有奈奎斯特零符号间干扰(ISI)属性的脉冲波形。升余弦脉冲即是一种具有零ISI的脉冲波形,其频域表达如下:当前93页,总共120页。这里T是脉冲周期或者称为符号周期。对其进行傅里叶反变换,得到脉冲波形如下:这显然是一个非因果的脉冲。通常将这个脉冲延时符号周期的整数倍,也就是mT,并将其长度截短到2mT,m的取值应该在便捷和精度要求之间进行折中。然后在每个符号周期内进行k点采样,使得T=kTs,这里Ts为采样周期。用t-td=t-mT来进行替换t,令t=nTs,及T=kTs得当前94页,总共120页。代入式(5-84),得到表示数字滤波器冲激响应的采样序列如下:为了说明升余弦响应,令x[n]=[n-1]为滤波器的输入,而该滤波器具有冲激响应p[n]。输出信号为对=0.32,k=10个采样点每符号,m=4个符号所得结果,如图5-15所示。显而易见,在假设的脉冲周期T=1的整数倍处,p[n]值为零。当前95页,总共120页。在许多系统设计中,传递函数P(f)通常通过两个具有传递函数为sqrt[P(f)]的滤波器的级联而来现。其中一个是发射器的一部分,而另一个则是接收器的一部分。于是有使用式(5-85)定义的替换可实现延时和采样运算,所得结果为当前96页,总共120页。如图5-16(上方)所示为具有冲激响应为PSQRC[n]的滤波器对输入信号[n-1]的响应,即滤波器的参数如下:=0.32,k=10个采样点每符号,T=1,m=4个符号。注意到此时过零点并不是精确地位于T=1的整数倍处。如图5-16下方所示为图5-16上方所给的采样序列与PSQRC[n]进行卷积的结果,它实质上表示PSQRC[n]与其本身进行卷积运算,等价于两个SQRC滤波器的级联。注意到过零点现在就落在T=1的整数倍处,因为两个SQRC滤波器的级联组合,就成为一个零ISI的滤波器。■当前97页,总共120页。图5-15升余弦脉冲实例当前98页,总共120页。图5-16平方根升余弦脉冲波形当前99页,总共120页。(三)FIR滤波器仿真模型的实现※我们已经看到,在通信系统仿真中,FIR模型起着关键的作用。前面章节中所讨论的是在解析地已知传递函数或者冲激响应,从而可对其进行采样时的设计方法。FIR仿真模型的另外一个重要应用是在设计过程的后期阶段。此时,滤波器也许已经设计并制造出来,这样就可以利用已经测量到的频率响应。FIR滤波器仿真模型特别适用于频率响应以经验形式给定(通过测量或者其他方式)的滤波器仿真。当前100页,总共120页。让我们看一下,如果频率响应是任意的,并且是使用表格形式经验性地给定时(通常可从网络分析仪测量值获得),那么仿真这样的滤波器有这么几个重要步骤。第一大步,合理选择两个重要参数,即采样率和截短滤波器的持续时间。要实现FIR滤波器,这两个参数就必须仔细选择,使得在最小化计算复杂度的同时,可以在时域以及频域上获得令人满意的分辨率。选择这两个参数的准则如下:采样率fs通常应满足fs>16B到32B,这里B是滤波器带宽。时间分辨率,即采样间隔为Ts=1/fs。频率分辨率△f=1/(NTs),这里N=fs/△f,理想的值处于B/64和B/32之间。采样点/符号数量必须为整数,通常是2的幂次方,最小值为8。冲激响应的持续时间通常选择8到16个符号。当前101页,总共120页。经过以上考虑,通常选取N=1024,N是滤波器抽头数量或者冲激响应的采样点数。在选择了重要参数fs和N(从而也确定Ts和与△f)之后,就要对给定的频率响应数据进行预处理并实现仿真模型。

实现仿真模型的第二大步涉及到对频率响应数据的预处理。这一步骤包括:1)进行带通到低通的转换(如果滤波器是带通滤波器);2)对频率响应数据进行重新采样;3)通过对群时延数据的数字积分将群时延转换为相位。带通到低通的转换只要通过重新标记频率轴(fl=f-fc)就可以实现。当前102页,总共120页。上述操作,可能导致低通等价滤波器不具有关于f=0的共扼对称性。在这种情况下,低通等价滤波器的冲激响应可能取复数值。一个实例是,当对一个残留边带滤波器进行带通到低通转换的时候,就会产生这种影响。重采样,诸如当网络分析仪测量结果所给出的频率点,跟要用于实现FIR滤波器的频率点不同时,这是必需的。例如,假设使用网络分析仪收集到频率响应的100个采样点,而FIR滤波器的实现是基于N=1024个采样点的,这种情况下,必须对所得频率响应进行内插。在大多数情况下,简单的线性内插就足够了。最后一步就是群时延响应到相位响应的转换,通过在频域上对群时延进行数字积分,群时延数据就可以转换为相位响应。当前103页,总共120页。一旦得到低通等价滤波器的频率响应,使用MATLAB实现FIR滤波器模型就包括以下步骤:1.将频率响应数据扩展到-fs/2到fs/2之间,并获得传递函数H(f)的采样值,-fs/2<f<fs/2,这里f=k△f,k=-N/2到N/2-1,△f是频率分辨率[△f=1/(NTs)]。2.将H(f)的负频率部分平移到N/2+1与N之间,于是频率响应就包含在H(k△f)之中,k=1,2,…,N。3.进行FFT反变换,就可以获得冲激响应[时域采样率为Ts=1/(N△f)]。4.如果必要的话,对冲激响应进行加窗(确保冲激响应作了合适旋转,且位于窗函数中心)。对加窗后的冲激响应进行归一化以便获得单位能量。当前104页,总共120页。在得到截短的冲激响应之后,可以使用参数为a=1,b=h的MATLAB函数filter来仿真滤波器,这里h是冲激响应阵列,即可以通过使用output=filter(b,a,input)获得滤波器的输出信号。若输入序列相当长,如前所述,则输出信号可以通过使用output=fftfilt(b,input,N)来获得,这里使用叠加法分块实现FIR滤波器,分块大小为N。接下来的MATLAB例子表明如何仿真一个卫星通信中使用的125MHz的带通信道滤波器。数据的测量特性由幅度响应和时延特性给出(见附录C)。当前105页,总共120页。例5-11采用前面讨论的方法进行FIR滤波器设计的MATLAB程序包含在附录C中。作为设计基础的测量数据也包含在附录C中(表5-4和表5-5),所得结果如图5-17和图5-18所示,图5-17给出了加窗的和未加窗的冲激响应,图5-18给出了加窗的和未加窗的幅度响应。加窗的和未加窗的响应分别画在两张图上,因为它们彼此很相近,画在一起就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论