数字信号处理课程设计FIR数字滤波器设计及MATLAB实现

数 字 信 号 处 理 课程设计 题目:
FIR数字滤波器设计及MATLAB的实现 学院:
专业:
班级:
学号:
姓名:
指导教师:
摘要 随着信息时代和数字世界的到来,数字信号处理已成为当今一门极为重要的学科和技术领域。数字信号处理在通信、语言、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域取得了广泛的应用。在数字信号处理应用中,数字滤波器十分重要并疑惑的广泛的应用。

数字滤波器是数字信号处理的重要内容,数字滤波器可分为IIR和FIR两大类。对于FIR数字滤波器的设计,可以根据所给定的频率特性直接设计,文中采用的方法是窗函数法。根据FIR滤波器的特点,在MATLAB环境下用窗函数设计FIR数字滤波器,并对信号进行分析,最后给出FIR滤波器对信号滤波的效果。

关键字:数字滤波器 FIR MATLAB 窗函数 目录 一. 背景 4 二. 设计目的 4 三. 设计原理 4 3.1 用窗函数法设计FIR滤波器 4 3.2 用窗函数设计fir滤波器基本方法 5 四. 设计基本思路及步骤 5 4.1基本思路 5 4.2窗函数法设计FIR数字滤波器步骤 5 五. 流程图 6 六. 程序编写及结果 6 七. 总结与体会 9 参考文献 10 一. 背景 数字滤波器可以过滤时间离散信号,通过对抽样数据进行数字处理来达到频域滤波的目的,目前已经广泛应用在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域。由于计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现。借助MATLAB强大的数据处理能力,灵活使用模块集和工具箱,可以按照需求编写程序来实现多种滤波器设计。伴随的不断发展以及工具箱的不断开发,工作平台的改善,使用MATLAB的编程工作量会大大减少。MATLAB提供了完整的联机查询、帮助系统,提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。而这也使得基于MATLAB的设计变得方便易于使用。

二. 设计目的 通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;
熟悉设计数字滤波器的方法,掌握利用数字滤波器对信号进行滤波的方法,掌握数字滤波器的计算机仿真,并能够对设计结果加以分析。

三. 设计原理 3.1 用窗函数法设计FIR滤波器 根据过渡宽带及阻带衰减要求,选择窗函数的类型并估计窗口长度N,窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡宽带小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡宽带,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则上在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数。

3.2 用窗函数设计fir滤波器基本方法 FIR 滤波器具有严格的相位特性,对于信号处理和数据传输是很重要的。目前 FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。

如果 FIR 滤波器的 h(n)为实数, 而且满足以下任意条件,滤波器就具有准确的线性相位:
第一种:偶对称,h(n)=h(N-1-n), φ (ω)=-(N-1)ω/2 (1) 第二种:奇对称,h(n)=-h(N-1-n), φ(ω)=-(N-1)ω/2+pi/2 (2) 对称中心在n=(N-1)/2处。基本思路:从时域出发设计 h(n)逼近理想 hd(n)。设理想滤波器的单位响应在时域表达为hd(n),则Hd(n) 一般是无限长的,且是非因果的,不能直接作为FIR 滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器单位抽样响应 h(n),最直接的方法是先将hd(n)往右平移,再进行截断,即截取为有限长因果序列:h(n)=hd(n)w(n),并用合适的窗函数迕行加权作为 FIR 滤波器的单位脉冲响应。按照线性相位滤波器的要求,线性相位FIR数字低通滤波器的单位抽样响应h(n)必须是偶对称的。对称中心必须等于滤波器的延时常数,即用矩形窗设计的FIR 低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,返个现象称为吉布斯(Gibbs)效应。为了消除吉布斯效应,一般采用其他类型的窗函数。MATLAB 设计 FIR 滤波器有多种方法和对应的函数。窗函数设计法不仅在数字滤波器的设计中占有重要的地位,同时可以用于功率谱的估计,从根本上讲,使用窗函数的目的就是消除由无限序列的截短而引起的Gibbs现象所带来的影响。

四. 设计基本思路及步骤 4.1基本思路 由于理想的低通滤波器是一个方波,则在时域为sinc函数。对sinc函数进行不通长度的加窗。则可以使滤波器向理想情况进行接近。从而做到设计滤波器的目的。

4.2窗函数法设计FIR数字滤波器步骤 (1)
确定数字滤波器的性能要求,临界频率,滤波器单位脉冲响应长度N (2)
根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应的幅频特性和相频特性 (3)
求理想单位脉冲响应,在实际计算中,可对采样,并对其求IDFT的,用代替 (4)
选择适当的窗函数w(n),根据求所需设计的FIR滤波器单位脉冲响应 (5)
求,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果 五. 流程图 开始 构造sinc函数 对sinc函数加窗 低通滤波器特性图 原始信号及其频谱 滤波后波形 结束 六. 程序编写及结果 clear clc; close all; wp=0.2*pi; ws=0.3*pi; wc=(ws+wp)/2; width=ws-wp; %设定过渡带宽度 N=ceil(6.6*pi/width)+1; n=1; fs=1/n; t=0:n:N-n; m=t-(N)/2+eps; a=sin(wc*m)./(pi*m); w_ham=hamming(N/n)'; c=a.*w_ham; [h,w]=freqz(c,[1]); db=20*log10((h+eps)/max(h)); subplot(221); plot(t,a);xlabel('sinc函数'); subplot(222); plot(w/pi,db);xlabel('dB特性'); subplot(223); plot(t,c);xlabel('sinc加窗'); subplot(224); plot(w/pi,abs(h));xlabel('滤波器特性'); t=0:n:2*N-n; figure(2); x=cos(0.08*t*pi)+cos(0.6*t*pi); i=fft(x)/N/2; y=filter(c,[1],x); j=fft(y)/N/2; subplot(221); plot(x);xlabel('原始信号'); subplot(222); stem(t/N,abs(i));xlabel('原始信号频谱'); axis([0,1,0,1]) subplot(223); plot(y);xlabel('滤波后信号'); subplot(224); stem(t/N,abs(j));xlabel('滤波后信号频谱'); axis([0,1,0,1]) figure(3); x=cos(0.6*pi*t); i=fft(x)/N/2; y=filter(c,[1],x); j=fft(y)/N/2; subplot(221); plot(x);xlabel('原始信号'); subplot(222); stem(t/N,abs(i));xlabel('原始信号频谱'); axis([0,1,0,1]) subplot(223); plot(y);xlabel('滤波后信号'); subplot(224); stem(t/N,abs(j));xlabel('滤波后信号频谱'); axis([0,1,0,1]) 图1:滤波器特性图 图2:噪声信号滤波处理后波形 图3:余弦函数滤波处理后波形 结果分析:
在滤波后初始阶段会有一段失真现象,经过相关知识的查找,可以理解为,由于滤波器为N阶,所以当信号经过前几阶时有延时,而与之同步的信号并未经过所有阶数而进行汇合。所以在信号通过所有延迟部分之前的信号都是失真的。

由图可以看到带有噪声的信号经过滤波后噪声基本完全滤除,而且从频率特性上看噪声的谱线也消失了。可以认为滤波成功。

七.总结与体会 通过本次对FIR数字滤波器的设计,使我们能够灵活运用已学知识并应用于实践,同时锻炼了分工、沟通、组织、合作等能力。这次设计不仅检验了我们所学习的知识,也培养了我们如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,学会了理解,也学会了做人与处世。体会了学以致用、突出自己劳动成果的喜悦心情。

在编程过程中应该注意一些细节问题,例如中英文符号的区别,往往一些错误都是由于粗心而导致的。还有在此次课程设计过程中,学习了许多数字信号处理课程中关于数字滤波器的设计的内容,再通过参考文献与利用网络,完成了用MATLAB进行数字信号处理课程设计。另外通过课程设计,加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法。同时掌握编程方法和解决实际问题的技巧。通过此次课程设计,我们收获颇丰。我们在多方面都有所提高,能够综合运用本专业所学课程的理论和生产实际知识进行一次系统设计从而培养和提高学生独立工作能力,提高计算能力,绘图能力,独立思考的能力也有了提高。

通过本次课程设计,我们也发现了我们在知识上存在许多的漏洞,还有很多知识掌握的不够牢固。在课程设计的过程中,通过看书和上网等途径进行知识的漏洞修补。由于我们的知识还不够完善,本次实验的设计还存在很多不完善的地方,需要老师给予指正,同时我们也将继续加强有关知识的学习。

参考文献 (1) 高西全,数字信号处理(第三版)西安电子科技大学出版社 (2) 程佩青,数字信号处理教程(第三版),清华大学出版社 (3) MATLAB7.0在数字信号处理中的应用  罗军辉  机械工业出版社 (4) 飞思科技产品研发中心编著.MATLAB7辅助信号处理技术与应用[M].北京:电子工业出版社,2005. (5) 数字信号处理原理及其MATLAB实现 从玉良  电子工业出版社

推荐访问:课程设计 数字信号处理 设计