数字信号处理课程设计报告

课程设计任务书

学生姓名:   吴丹逸         专业班级:    电信1202班              

指导教师: 祝立华  王虹     工作单位:  信息工程学院                

题  目: 用窗函数法设计FIR数字滤波器

初始条件:

      1. Matlab6.5以上版本软件;

      2. 课程设计辅导资料:“Matlab语言基础及使用入门”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;

      3. 先修课程:信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求)

1.       课程设计时间:1周(课内实践);

2.       课程设计内容:用窗函数法设计FIR数字滤波器,具体包括:用窗函数法设计FIR数字滤波器基本方法,各种窗函数的应用、比较、选择,线性相位FIR滤波器的设计等;

3.       本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结;

4.       课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:

①  目录;

②       与设计题目相关的理论分析、归纳和总结;

③       与设计内容相关的原理分析、建模、推导、可行性分析;

④       程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;

⑤       课程设计的心得体会(至少500字);

⑥       参考文献;

⑦  其它必要内容等。

时间安排:第19周

参考文献:

刘泉、阙大顺、郭志强著,《数字信号处理原理与实现》,北京:电子工业出版社,2009.6

薛喜年著,《MATLAB在数字信号处理中的应用》,国防科技大学出版社

阙大顺、郭志强著,《数字信号处理学习指导与考研辅导》,武汉理工大学出版社

指导教师签名:                       年     月    日

系主任(或责任教师)签名:           年     月    日


             目录

1、绪论............................................................................................................................ 2

2、软件介绍..................................................................................................................... 3

3、课程设计题目及要求................................................................................................... 4

4、设计原理..................................................................................................................... 5

4.1基本原理............................................................................................................. 5

4.2典型窗函数......................................................................................................... 5

5、FIR滤波器的窗函数设计过程...................................................................................... 9

5.1利用三角窗设计.................................................................................................. 9

5.2利用矩形窗设计................................................................................................. 11

5.3 利用布莱克曼窗设计......................................................................................... 12

5.4、结果分析........................................................................................................ 14

6、心得体会................................................................................................................... 15

7、参考文献................................................................................................................... 16

  用窗函数法设计FIR数字滤波器

1、绪论

   在许多数字信号处理系统中,FIR滤波器是最常用的组件之一,他完成信号预调、频带选择和滤波等功能。FIR滤波器在截止频率的边沿陡峭性能虽然不如IIR滤波器,但是,考虑到FIR滤波器严格的线性相位特性和不像IIR滤波器存在稳定性的问题,FIR滤波器能够在数字信号领域得到广泛的应用。FIR是有限冲击响应(Finite Impulse Response)的简称。由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。当我们处理有限的离散数据时,线性系统地响应(包括对冲击的响应)也是有限的。若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。通过这种方式确定的滤波器称为有限冲击响应(FIR)滤波器。FIR滤波器是在数字信号处理中经常使用的两种基本滤波器之一,另一个为IIR滤波器。IIR滤波器是无限冲击响应滤波器。

2、软件介绍

此次设计主要基于MATLAB的软件环境。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

3、课程设计题目及要求

     1、用矩形窗设计一个FIR线性相位数字低通滤波器,已知。求出并画出幅频响应特性曲线。

     2、用三角形窗设计一个FIR线性相位数字低通滤波器,已知;要求画出滤波器的曲线。

    3、用布莱克曼窗设计一个FIR线性相位相移的数字带通滤波器

   设。试求出的表达式,并画出曲线。

4、设计原理

  4.1基本原理

   设计低通FIR数字滤波器,寻求一系统函数H(z),使其频率响应H()逼近滤波器要求的理

想频率响应,其对应的单位脉冲响应

               |w|≤

 ={0        <|w|<π                  (3-1)

其中α=(N-1)/2

如果所希望的滤波器的理想的频率响应函数为,则其对应的单位脉冲响应为

                   (3-2)

窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼近。由于?往往是无限长序列,而且是非因果的,所以用窗函数w(n)将截断,并进行加权处理,得到:

                                  (3-3)

h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数???

                                   (3-4)

式中N为所选窗函数w(n)的长度。

4.2典型窗函数

(1)矩形窗

           W(n)=                                        

其频率响应和幅度响应分别为:

                 

  (2)三角窗

                           

其频率响应为

                             

(3)汉宁窗,又称升余弦窗

                                  

其频率响应和幅度响应分别为:

    

(4)   汉明窗,又称改进的升余弦窗

      

(5)布莱克曼窗 ,又称二阶升余弦窗

      

    我们知道,用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度

N 。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见下表1

                         表1 各种窗函数的基本参数

         

    这样选定窗函数类型和长度N之后,求出单位脉冲响应h(n)=·w(n),并求出H()。H()是否满足要求,要进行演算。一般在h(n)尾部加零使长度满足2的整数次幂,以便用FFT计算H().如果要观察细节,补零点数增多即可。如果H()不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。

如果要求线性相位特性,则h(n)还必须满足

                        

                           

根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择这一类,而不能选择这一类。

     我们在设计滤波器时,希望窗谱主瓣尽可能窄,以获得较陡的过渡带,同时尽可能减小最大旁瓣的相对幅度,我们发现这是不可能的,因为这本身就是一个矛盾体,所以在设计滤波器时只是根据实际情况来选择合适的窗函数

    主程序框图如图下图所示。其中幅度特性要求用dB表示。

           

                          图1    主程序框图

5、FIR滤波器的窗函数设计过程

    窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲应响应序列的设计方法,通常在设计滤波器之前,应该先根据具体的工程应用确定滤波器的技术指标,在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频域中以分贝值给出的相对幅度响应和相位响应。    

   使用窗函数法设计时要满足以下两个条件:

1窗谱主瓣尽可能地窄,以获得较陡的过渡带;

2尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进行增加阻带的衰减。 

5.1利用三角窗设计

   题:用三角形窗设计一个FIR线性相位数字低通滤波器,已知;要求画出滤波器的曲线。

分析:

(1)取N=51和三角窗函数w(n)设计,三角窗函数为

      

                                                     

三角形窗函数的频谱特性为

       

(2)设一理想低通滤波器的截止频率为wc,时延为α,即

                                |w|≤wc

              

                          0          wc<|w|≤π

,是希望设计的滤波器的频率响应函数。对应的冲激响应为

          

显然,hd(n)是以α为中心的无限长非因果序列。现在需要寻找一个有限长序列h(n)来逼近hd(n),h(n)应满足FIR滤波器的基本条件,即它是偶对称或是奇对称,以满足线性相位的要求,而且h(n)应该是因果的。

(3)将hd(n)与三角窗函数w(n)相乘得到FIR数字滤波器的冲激响应h(n)为

                

(4)由h(n)来计算FIR数字滤波器的频率响应为

                

求解本题的MATLAB实现程序如下,其运行结果为设计的FIR线性相位数字低通滤波器的幅频响应曲线,如图2所示

         wc=0.5*pi;    %截止频率

        N=51;        %窗的长度

        n=[0:1:(N-1)];

        a=(N-1)/2;      %时延

        m=n-a+eps;

        hd=sin(wc*m)./(pi*m);   %理想滤波器的冲激响应

        wd=(triang(N))';       %调用三角窗函数

        h=hd.*wd;              %设计的滤波器的冲激响应

        [H,rad]=freqz(h);      %对应的频率响应

        plot(rad,20*log10(abs(H)));   %绘出幅频响应曲线

        xlabel('频率/HZ');

        ylabel('幅频响应/dB');

        title('32号 吴丹逸');

        grid on;      

        

                             图2 题一幅频响应图

5.2利用矩形窗设计

   题: 用矩形窗设计一个FIR线性相位数字低通滤波器,已知。求出并画出幅频响应特性曲线。

分析:本题采用矩形窗作为冲激响应的窗函数,具体设计思路及分析与三角窗相同。求解本题的MATLAB程序如下,其运行结果为设计的FIR线性相位低通滤波器的h(n)和幅频响应特性曲线,如图3所示。

        wn=0.25;

        n=21;

        N=n+1;

        b=fir1(n,wn,'low',boxcar(N));  %求滤波器的频率响应;

        t=0:21;

        subplot(211);      %绘图排布两行一列此图位于从上到下第一个

        stem(t,b,'.');hold on;

        plot(t,zeros(1,22));title('32号吴丹逸    单位抽样响应h(n)');grid;

        M=128;

        h=freqz(b,1,M);      %计算离散系统频响特性

        f=0:0.5/M:0.5-0.5/M;

        subplot(212);        %此图位于从上到下第二个

        plot(f,abs(h));title('幅频响应');grid;

        xlabel('频率单位2pi');ylabel('幅度/dB');

     

                                                图3 题二仿真图

5.3 利用布莱克曼窗设计

题:用布莱克曼窗设计一个FIR线性相位相移的数字带通滤波器

   设。试求出的表达式,并画出曲线。

分析:先求解出hd(n),

  

        

根据窗函数设计法,数字带通滤波器的单位冲激响应为

            

                

                     

取N=51,求解本题的MATLAB实现程序如下,其运行结果为设计的数字带通滤波器的h(n)和幅频响应曲线,如图4所示

   w0=0.6*pi;

   wc=0.2*pi;

   w1=blackman(51);   %调用布莱克曼窗函数

   n=1:1:51;

   hd=i*(sin((w0+wc)*(n-25))-sin((w0-wc)*(n-25)))./(pi*(n-25)+eps);    % 希望设计的滤波器的冲激响应

h1=hd.*rot90(w1);     %实际设计的相移90度后的数字带通滤波器的冲激响应

[mag1,rad]=freqz(h1);    %对应的频率响应

plot(rad,20*log10(abs(mag1)));   %绘出幅频响应曲线

title('32号吴丹逸');

xlabel('频率/Hz');ylabel('幅度/dB');

grid on; 

     

                                图4 题三幅频响应图

5.4、结果分析

      经过利用三角窗、矩形窗和布莱克曼窗设计FIR滤波器所得到的幅频响应曲线图可以看出不同的窗函数所设计的滤波器频率响应有所不同。三角窗和矩形窗设计的低通滤波器频率响应曲线比较相似,但可以看出三角窗的过渡带更宽,主瓣宽度也更宽,旁瓣峰值幅度绝对值更大,最小阻带衰减绝对值也更大。布莱克曼窗设计的带通滤波器的频率响应曲线也基本符合教材中对布莱克曼窗理论的分析,它的旁瓣主瓣宽度、过渡带宽、最小阻带衰减均比三角窗和矩形窗大。最小阻带衰减仅由窗的形状决定,不受窗的长度N的影响;而过渡带宽度随窗宽的增加而减少。本次课设中虽没有针对某一种窗改变其宽度,但从设计的过程的分析中可以看出这一点。

6、心得体会

   通过本次课程设计,我巩固了课堂中学习的理论知识,并能够用所学习的理论知识正确分析数字信号处理的基本问题,和解释数字信号处理的基本现象,掌握了用窗函数法设计FIR数字低通滤波器的正确方法和步骤,以及用MATLAB软件编写程序实现该滤波器的仿真,还学到了一些用所学知识解决实际问题的技巧。 还体会到了与其他高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地设计具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。对几种典型的窗函数的应用也更加熟悉,对不同的滤波器应采用不同的窗函数,因为不同的窗函数所涉及的滤波器的幅频响应有所不同。另外,由于课本知识掌握的不牢固和MATLAB软件编程环境的不熟悉,在课程设计的过程中也遇到了一些难题,例如不知道用窗函数法设计FIR数字低通滤波器的详细方法和步骤,题目所给的参数不知道如何转换成低通滤波器的技术指标,还有此程序指令的MATLAB实现也让我们很头疼。最后通过认真看了几遍课本和其他有关书籍,网上查阅相关资料,才使得这些问题得以解决。总之,此次课程设计让我收获多多,理论与实践的结合产生的成果也让我很有成就感,以后的学习中我会更加注重这方面的,提升自己的动手能力和对知识的应用能力,从而加深对理论的理解,将知识学透彻。这也是我们当代大学生应该具备的素养。

7、参考文献

[1]薛山.MATLAB基础教程.清华大学出版社,2011.

[2] 薛喜年著,《MATLAB在数字信号处理中的应用》,国防科技大学出版社

[3] 陈怀琛.数字信号处理教程—MATLAB释义与实现.电子工业出版社,2004.

[4] 李娟.MATLAB平台下的FIR数字滤波器设计与分析.高师理科学刊,2010,第03期.

[5]刘泉、阙大顺、郭志强著,《数字信号处理原理与实现》,北京:电子工业出版社,2009.6

[6]阙大顺、郭志强著,《数字信号处理学习指导与考研辅导》,武汉理工大学出版社

相关推荐