您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 基于matlab的fir滤波器的设计课程设计
课程设计报告题目基于MATLAB的FIR滤波器的设计学院信息工程学院专业电子信息工程摘要数字滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。根据FIR滤波器的原理,提出了FIR滤波器的窗函数设计法,并对常用的几种窗函数进行了比较。给出了在MATLAB环境下,用窗函数法设计FIR滤波器的过程和设计实例。仿真结果表明,设计的FIR滤波器的各项性能指标均达到了指定要求,设计过程简便易行。该方法为快速、高效地设计FIR滤波器提供了一个可靠而有效的途径。FIR数字滤波器以其良好的线性特性被广泛应用于现代电子通信系统中,是数字信号处理的重要内容之一。在实际信号处理中,往往要求系统兼具实时性和灵活性,而已有的一些软件或硬件实现方案(如DSP)则难以同时达到这两方面的要求。使用具有并行处理特性的FPGA来实现FIR滤波器,既有很强的实时性,又兼顾了灵活性,为数字信号处理提供了一种很好的解决方案。FIR滤波器系数计算较为繁琐,在设计时借助Matlab工具箱,选择合适的窗函数,可以方便地计算滤波器系数,并分析其幅频、相频特性。设计目的(1)掌握用窗函数法设计FIR数字滤波器的原理与方法。(2)熟悉线性相位FIR数字滤波器的特性。(3)了解各种窗函数对滤波特性的影响。FIR滤波器的简介和原理FIR数字滤波器的特点(与IIR数字滤波器比较):优点:(1)很容易获得严格的线性相位,的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要;(2)可得到多带幅频特性;(3)极点全部在原点(永远稳定),无稳定性问题;(4)任何一个非因果的有限长序列,总可以通过一定的延时,转变为因果序列,所以因果性总是满足;(5)无反馈运算,运算误差小。缺点:(1)因为无极点,要获得好的过渡带特性,需以较高的阶数为代价;(2)无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设计程序完成。FIR滤波器具有严格的相位特性,返对于诧音信号处理和数据传输是很重要的前FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。常用的是窗函数法和切比雪夫等波纹逼近的最优化设计法。本设计中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要丌高的时候是比较灵活方便的。如果FIR滤波器的h(n)为实数,而且满足以下任意条件,滤波器就具有准确的线性相位,第一种:偶对称,h(n)=h(N-1-n),φ(ω)=-(N-1)ω/2第二种:奇对称,h(n)=-h(N-1-n),φ(ω)=-(N-1)ω/2+pi/2对称中心在n=(N-1)/2处,根据以上对称条件,可以将FIR滤波器分为4种:h(n),evenlysymmetric,oddNh(n),evenlysymmetric,evenN,3h(n),oddlysymmetric,oddN,h(n),oddlysymmetric,evenN,典型的窗函数(1)矩形窗(RectangleWindow))()(nRnwN其频率响应和幅度响应分别为:21)2/sin()2/sin()(NjjeNeW,)2/sin()2/sin()(NWR(2)三角形窗(BartlettWindow)121,122210,12)(NnNNnNnNnnw其频率响应为:212])2/sin()4/sin([2)(NjjeNNeW(3)汉宁(Hanning)窗,又称升余弦窗)()]12cos(1[21)(nRNnnwN其频率响应和幅度响应分别为:)]12()12([25.0)(5.0)()()]}12()12([25.0)(5.0{)()21(NWN(4)海明(Hamming)窗,又称改进的升余弦窗)()]12cos(46.054.0[)(nRNnnwN其幅度响应为:)]12()12([23.0)(54.0)(NWN(6)凯泽(Kaiser)窗10,)())]1/(21[1()(020NnINnInw其中:β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。I0(·)是第一类修正零阶贝塞尔函数。5种窗函数性能比较窗类型旁瓣峰值主瓣峰值最小阻带衰减矩形窗13dB4π/M21dB三角窗25dB8π/M25dB汉宁窗31dB8π/M44dB海明窗41dB8π/M53dB凯泽窗57dB12π/M74dB用窗函数设计FIR滤波器的基本方法设计思想:从时域从发,设计)(nh逼近理想)(nhd。设理想滤波器)(jdeH的单位脉冲响应为)(nhd。以低通线性相位FIR数字滤波器为例。deeHnhenheHjnjddjnndjd)(21)()()()(nhd一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断)()()(nwnhnhd,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。按照线性相位滤波器的要求,h(n)必须是偶对称的。对称中心必须等于滤波器的延时常数,即2/)1()()()(Nanwnhnhd用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。为了消除吉布斯效应,一般采用其他类型的窗函数。使用窗函数法设计时要满足以下两个条件:(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带;(2)尽量减少窗谱的最大旁瓣的相对幅度,也就是使能量尽量集中于主瓣,减小峰肩和纹波,进而增加阻带的衰减。设计步骤a.录制一段自己的语音信号,并对录制的信号进行采样。b.画出采样后语音信号的时域波形和频谱图。c.噪声的添加。d.给出滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应。e.设计滤波器并对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。f.回放语音信号。g..设计一个GUI界面(选做)。(a)语音信号的采集利用Windows下的录音机,录制一段自己的话音,时间在2s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。代码:[y,fs,bits]=wavread('zyb.wav',[102463500]);sound(y,fs,bits);(b)语音信号的频谱分析首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。代码:Y=fft(y,4096);figure(1);plot(y);title('语音信号的时域波形');figure(2);plot(abs(Y));title('语音信号的频谱特性');0123456x104-1-0.8-0.6-0.4-0.200.20.40.60.81语音信号的时域波形050010001500200025003000350040004500012345678910语音信号的频谱特性(c)利用特定的函数产生噪声。代码:t=0:0.2:10;y1=awgn(y,10,'measured');Y1=fft(y1,4096);figure(3);plot(y1);title('加噪语音信号的时域波形');figure(4);plot(abs(Y1));title('加噪语音信号的频谱特性');0123456x104-1.5-1-0.500.511.5加噪语音信号的时域波形05001000150020002500300035004000450001020304050607080加噪语音信号的频谱特性(d)设计数字滤波器和画出其频率响应给出各滤波器的性能指标:(1)低通滤波器性能指标fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。(2)高通滤波器性能指标fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。(3)带通滤波器性能指标fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。利用窗函数法和双线性变换法设计其上的低通滤波器。在Matlab中,利用函数fir1设计FIR滤波器,并利用Matlab中的函数freqz画出各滤波器的频率响应。(e)用滤波器对信号进行滤波利用设计出的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。(f)比较滤波前后语音信号的波形及频谱在一个窗口同时画出滤波前后的波形及频谱。(g)回放语音信号在Matlab中,函数sound可以对声音进行回放。(h)设计系统界面(选作)为了使编制的程序操作方便,设计GUI的用户界面。设计流程图程序代码:fs=20000;%********对外部声音的读取和处理**********************************************[y,fs,bits]=wavread('张源斌.wav',[204860000]);sound(y,fs,bits);Y=fft(y,4096);figure(1);plot(y);title('语音信号的时域波形');figure(2);plot(abs(Y));title('语音信号的频谱特性');%*************添加噪声******************************************************n=length(y);t=0:1/fs:(n-1)/fs;Au=0.04对声音信号进行时域和频域分析添加噪声设计滤波器播放带有噪声的声音信号开始录制声音信号回放滤波后的声音比较滤波前后的时域和频域分析Noise=[Au*sin(2*pi*5000*t)]';y1=y+Noise;Y=fft(y1,4096);sound(y1,fs,bits);figure(3);plot(y1);title('加噪语音信号的时域波形');figure(4);plot(abs(Y));title('加噪语音信号的频谱特性');%********FIR滤波器设计******************************************************fs=20000;rp=1;rs=100;fcuts=[10001200];d1=(10^(rp/20)-1)/(10^(rp/20)+1);d2=10^(-rs/20);mags=[10];devs=[d1d2];[n,wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);b=fir1(n,wn,ftype,kaiser(n+1,beta),'noscale');figure(5);freqz(b,1,512);grid;xlabel('频率/Hz');ylabel('频率响应幅度');grid;%********对原信号进行滤波***************************************************f1=filter(b,1,y1);sound(f1,20000);%播放滤波后的信号%********比较波形滤波前后时域的图形******************************************figure(6)subplot(2,1,1)plot(y1)%画出滤波前的时域图title('滤波前的时域波形');xlabel('times');ylabel('幅度');grid;subplot(2,1,2)plo
本文标题:基于matlab的fir滤波器的设计课程设计
链接地址:https://www.777doc.com/doc-2570537 .html