您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于频率抽样法和Matlab的FIR数字滤波器的设计
基于频率抽样法和Matlab的FIR数字滤波器的设计摘要:介绍了应用Matlab设计FIR数字滤波器时采用的办法——直接程序设计法,同时介绍了FIR数字滤波器几种设计方案的函数调用格式;通过实例,给出了程序设计法进行设计的的详细步骤,并在Matlab环境下,对所设计的滤波器进行了仿真。最后应用另一种办法——频率抽样法设计一个FIR滤波器的具体实现。关键字:数字滤波器;Matlab;有限长冲击响应;抽样频率法。DesignofFIRdigitalfilterbasedonsamplingmethodoffrequencyAbstract:TwomethodsfordesigningtheFIRdigitalfilterbasedonMatlabareintruoducehere—directprogramming.TheformsofthefunctioncalledfromMatlabaredemonstrated.Thedetailedstepstheprogrammethodandtheoneofonsamplingmethodoffrequency,Theintroductiondesignsfilter'sconcreterealizationusingthesamplingfrequencymethod.Keywords:Figuresfilter;Matlab;Limitedimpactresponselong;Thesamplingfrequency.引言:随着计算机技术和集成电路技术的成熟的发展,数字信号处理以其方便,灵活的特点,越来越引起人们的重视,数字滤波器是数字信号处理的重要内容,数字滤波器的设计已成为数字信号处理研究中的热点之一。应用matlab语言可以快捷的设计出由软件组成的数字滤波器,很容易通过参数的的修改进行性能的优化。FIR滤波器(即有限长冲击响应滤波器,FinireImpulseResponseDigitalFilter)最大的优点就是满足幅频特性的同时,还可以获得严格的线性相位特性,这使它在语音处理、图像处理等要求高保真的数字信号处理中显得十分重要。1FIR数字滤波器的设计原理滤波器就是在时间域或频率域内。对已知的激励,产生规定的规定响应的网络,是其能够从信号中提取并放大有用的信号,抑制并衰弱不需要的信号。数字滤波器的设计,实质上就是对提出的设计要求给出相应的性能指标,再通过计算,是物理可实现的实际滤波器频率响应特性,逼近给出的频率响应特性,设计完成后,可根据计算的结果在FPGA或DSP上实现。FIR数字滤波器系统的传递函数为:10()()()()NnnYzHzbnzXz由此得到系统函数的差分方程:y(n)=b(0)x(n)+b(1)x(n-1)+…+b(N-1)x[n-(N-1)]若FIR数字滤波器的单位脉冲响应序列为h(n),他就是滤波器系数向量b(n)。应用Matlab设计FIR滤波器的主要任务就是根据给定的性能指标,设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计的滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。2FIR数字滤波器的直接程序设计法FIR滤波器的主要设计方法有窗函数、最优化设计法及约束最小二乘法逼近法。在滤波器传统设计中,要得到其幅频和相频响应特性,需要根据这些方法进行大量的计算,周期变长,不利于设计的优化。Matlab信号处理工具箱中提供了基于滤波器设计的方法的工具函数,编程中可根据设计要求直接调用相应的函数,方便快捷。调用函数表格如下:设计方法调用函数调用格式说明窗函数法fir1fir2b=fir1(n,Wn)b=fir2(n,f,m)n为阶数,Wn为截止频率。f,m为期望幅频响应的频率向量和幅值向量最优化设计法firlsremezremezordb=firls(n,f,a)b=remez(n,f,a,w)[n,fo,ao,w]=remezord(f,a,dev)两者仅算法不同,f为频率点向量,n为指定频率点幅度响应,w为权系数。fo为归一化频率边界,ao为频带内幅值,w为权向量。约束最小二乘法firclsfircls1b=fircls(n,f,a,up,lo)b=fircls1(n,wo,dp,ds)up,lo为每个频率上边界和下边界频率,f,a为期望幅频特性频率向量和幅值向量。Wo为截止频率,dp为离幅值1的最大偏差,ds为阻带离幅值0的最大偏差。下面通过一个实例来说明如何用程序设计法设计滤波器。例:要求设计一个最小阶数的低通滤波器,采样频率Fs=2000Hz,通带的截止频率为500Hz,阻带的截止频率为600Hz,阻带的最小衰减为40dB,通带的最大衰减为3dB。在设计之前,首先要确定是用什么样的方法进行设计,本例选用等波纹的最优化设计法。在Matlab命令窗口直接键入程序代码,即可得到所设计的滤波器。程序代码如下:fs=2000;%采样频率rp=3;%通带波纹rs=40;%阻带波纹f=[500,600];%截止频率a=[10];%期望的幅度dev=[(10^(rp/20)-1)/(10^(rp/20)+1)10^(-rs/20)];[n,fo,so,w]=remezord(f,a,dev,fs);b=remez(n,fo,ao,w);%调用最优设计法中remez函数freqz(b,l,1024,fs)程序运行后,计算机输出该滤波器的幅频及相频响应特性如下:01002003004005006007008009001000-1500-1000-5000Frequency(Hz)Phase(degrees)01002003004005006007008009001000-100-50050Frequency(Hz)Magnitude(dB)在设计中,如果该滤波器的特性不满足要求,那么,原有参数必须作适当的调整。这在程序中很容易实现,只需对参数进行重新设定,就可以得到新条件下的滤波器特性。3频率抽样法根据序列傅里叶的变换与离散傅里叶变换的关系,一个任意长的序列,对它的频率特性进行N等分间隔抽样,利用离散傅里叶反变换,可以得到一个N点的有限长序列。这个有限长序列是原序列以N为周期的周期序列的主值序列,因而它的频率特性也将逼近原序列所对应的频率特性。因而,对一个理想的频响Hd(e),其对应的单位抽样响应的是h(n),如果对H在单位圆作N等分间隔抽样,得到N个频率抽样值H,由H(k)经IDFT得到N点的有限长序列h(n),则()[()]()dNrhnhnrNRn式中()NRn是N点矩阵序列。h(n)是()dhn的主值序列,因此,由h(n)求得的频率响应()jHe逼近()jdHe,这就是频率抽样法的基本过程,从而频率抽样法设计的基本步骤可归纳为:zz()()()()()jwIDFTejjdHeHkhnHzHe抽样变换对()jdHe抽样所得()Hk表示为:2()()jkNdHkHe(k=0,1,2……1N)由()Hk至()hn再至()Hz的过程可用()Hk直接求()Hz的内插公式求出,即12011()()1NNjkkNzHkHzNez根据频率抽样法,为逼近所需要的频率响应,先要在z平面单位圆上对所需的频率采样,然后求出通过频域取样点的内插频率响应。对于频响足够平滑的滤波器,内插误差一般较小。下面通过一个实例来说明应用抽样频率法设计FIR数字滤波器的例子:例:用频率采样法设计一个具有线性相位的低通滤波器,其理想频率选择性为1,00,()cjwHe其他已知截止频率为0.5,抽样点数为33.其Matlab程序如下:clear;N=33;H[ones(1,9),zeros(1,15),ones(1,9)];H=[ones(1,9),zeros(1,15),ones(1,9)];%H(1,10)=0.5;H(1,24)=0.5;k=0:(N-1)/2;k1=(N+1)/2:(N-1);A=[exp(-j*pi*k*(N-1)/N),exp(j*pi*(N-k1)*(N-1)/N)];HK=H.*A;hn=ifft(HK);freqz(hn,1,256);figure(2);stem(real(hn),'.');line([035],[00]);xlabel('n');ylabel('h(n)');00.10.20.30.40.50.60.70.80.91-2000-1500-1000-5000500NormalizedFrequency(rad/sample)Phase(degrees)00.10.20.30.40.50.60.70.80.91-150-100-50050NormalizedFrequency(rad/sample)Magnitude(dB)幅频和相频曲线051015202530-0.100.10.20.30.40.5单位冲击响应的实部4小结从上述两例中的幅频特性可以看出:通带的边界出现过冲,阻带存在波动,设计的结果,阻带实际衰减只有十五六个分贝,特性不好,主要原因是由通带到阻带间得到抽样值由1突变到0,没有逐渐衰弱的过渡带。若抽样点之间的特性变化越剧烈,则内插与理想值的误差越大,因而再不连续点附近就会出现肩峰和起伏。所以,为了改善特性,直观上看,应当增大长度N,增加一个可控制的过渡带,能按照特性要求,较精确地确定通带和阻带的边界频率值,这就是所谓滤波器设计优化,需要用线性规划的理论和相应的技术来解决。参考文献:[1]丁玉美,高西全,数字信号处理.西安;西安电子科技大学出版社[2]黄文梅.信号分析与处理.长沙;国防科技大学出版社[3]楼顺天,李伯菡.基于Matlab的系统分析与设计.西安;西安电子科技大学出版社[4]罗军辉,罗勇江.Matlab在数字信号处理中的应用[5]周浩敏,王睿.测试信号处理技术.北京航空航天大学出版社
本文标题:基于频率抽样法和Matlab的FIR数字滤波器的设计
链接地址:https://www.777doc.com/doc-7237308 .html