基于频率抽样法和Matlab的FIR数字滤波器的设计

  • 格式:doc
  • 大小:88.50 KB
  • 文档页数:6

基于频率抽样法和Matlab 的FIR 数字滤波器的设计摘要:介绍了应用Matlab 设计FIR 数字滤波器时采用的办法——直接程序设计法,同时介绍了FIR 数字滤波器几种设计方案的函数调用格式;通过实例,给出了程序设计法进行设计的的详细步骤,并在Matlab 环境下,对所设计的滤波器进行了仿真。

最后应用另一种办法——频率抽样法设计一个FIR 滤波器的具体实现。

关键字:数字滤波器;Matlab ;有限长冲击响应;抽样频率法。

Design of FIR digital filter based on samplingmethod of frequencyAbstract:Two methods for designing the FIR digital filter based on Matlab are intruoduce here —direct programming.The forms of the function called from Matlab are demonstrated .The detailed steps the program method and the one of on sampling method of frequency, The introduction designs filter's concrete realization using the sampling frequency method.Key words : Figures filter; Matlab; Limited impact response long; The sampling frequency.引言:随着计算机技术和集成电路技术的成熟的发展,数字信号处理以其方便,灵活的特点,越来越引起人们的重视,数字滤波器是数字信号处理的重要内容,数字滤波器的设计已成为数字信号处理研究中的热点之一。

应用matlab 语言可以快捷的设计出由软件组成的数字滤波器,很容易通过参数的的修改进行性能的优化。

FIR 滤波器(即有限长冲击响应滤波器,Finire Impulse Response Digital Filter )最大的优点就是满足幅频特性的同时,还可以获得严格的线性相位特性,这使它在语音处理、图像处理等要求高保真的数字信号处理中显得十分重要。

1 FIR 数字滤波器的设计原理滤波器就是在时间域或频率域内。

对已知的激励,产生规定的规定响应的网络,是其能够从信号中提取并放大有用的信号,抑制并衰弱不需要的信号。

数字滤波器的设计,实质上就是对提出的设计要求给出相应的性能指标,再通过计算,是物理可实现的实际滤波器频率响应特性,逼近给出的频率响应特性,设计完成后,可根据计算的结果在FPGA 或DSP 上实现。

FIR 数字滤波器系统的传递函数为:1()()()()N nn Y z H z b n z X z --===∑由此得到系统函数的差分方程: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),再将所设计的滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化。

2 FIR 数字滤波器的直接程序设计法FIR 滤波器的主要设计方法有窗函数、最优化设计法及约束最小二乘法逼近法。

在滤波器传统设计中,要得到其幅频和相频响应特性,需要根据这些方法进行大量的计算,周期变长,不利于设计的优化。

Matlab信号处理工具箱中提供了基于滤波器设计的方法的工具函数,编程中可根据设计要求直接调用相应的函数,方便快捷。

调用函数表格如下:下面通过一个实例来说明如何用程序设计法设计滤波器。

例:要求设计一个最小阶数的低通滤波器,采样频率Fs=2000Hz,通带的截止频率为500Hz,阻带的截止频率为600Hz,阻带的最小衰减为40dB,通带的最大衰减为3dB。

在设计之前,首先要确定是用什么样的方法进行设计,本例选用等波纹的最优化设计法。

在Matlab命令窗口直接键入程序代码,即可得到所设计的滤波器。

程序代码如下:fs=2000; %采样频率rp=3; %通带波纹rs=40; %阻带波纹f =[500,600]; %截止频率a=[1 0];%期望的幅度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)程序运行后,计算机输出该滤波器的幅频及相频响应特性如下:010*******4005006007008009001000-1500-1000-500Frequency (Hz)P h a s e (d e g r e e s )010*******4005006007008009001000-100-5050Frequency (Hz)M a g n i t u d e (d B )在设计中,如果该滤波器的特性不满足要求,那么,原有参数必须作适当的调整。

这在程序中很容易实现,只需对参数进行重新设定,就可以得到新条件下的滤波器特性。

3 频率抽样法根据序列傅里叶的变换与离散傅里叶变换的关系,一个任意长的序列,对它的频率特性进行N 等分间隔抽样,利用离散傅里叶反变换,可以得到一个N 点的有限长序列。

这个有限长序列是原序列以N 为周期的周期序列的主值序列,因而它的频率特性也将逼近原序列所对应的频率特性。

因而,对一个理想的频响Hd(e ),其对应的单位抽样响应的是h(n),如果对H 在单位圆作N 等分间隔抽样,得到N 个频率抽样值H ,由H (k )经IDFT 得到N 点的有限长序列h(n),则()[()]()d N r h n h n rN R n ∞=-∞=+∑式中()N R n 是N 点矩阵序列。

h(n)是()d h n 的主值序列,因此,由h(n)求得的频率响应()j H e ω逼近()j d H e ω,这就是频率抽样法的基本过程,从而频率抽样法设计的基本步骤可归纳为:z z ()()()()()jwIDFTe j j d H e H k h n H z H e ωω=−−−→−−−→−−−→−−−→抽样变换对()j d H e ω抽样所得()H k 表示为:2()()j k Nd H k H eπ= (k=0,1,2……1N -)由()H k 至()h n 再至()H z 的过程可用()H k 直接求()H z 的内插公式求出,即12011()()1NN j k k Nz H k H z Nezπ--=--=-∑根据频率抽样法,为逼近所需要的频率响应,先要在z 平面单位圆上对所需的频率采样,然后求出通过频域取样点的内插频率响应。

对于频响足够平滑的滤波器,内插误差一般较小。

下面通过一个实例来说明应用抽样频率法设计FIR 数字滤波器的例子:例:用频率采样法设计一个具有线性相位的低通滤波器,其理想频率选择性为1,00,()c jwH e ωω≤≤=其他已知截止频率为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([0 35],[0 0]);>> xlabel('n');ylabel('h(n)');0.10.20.30.40.50.60.70.80.91-2000-1500-1000-5000500Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )0.10.20.30.40.50.60.70.80.91-150-100-50050Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )幅频和相频曲线51015202530-0.10.10.20.30.40.5单位冲击响应的实部 4 小结从上述两例中的幅频特性可以看出:通带的边界出现过冲,阻带存在波动,设计的结果,阻带实际衰减只有十五六个分贝,特性不好,主要原因是由通带到阻带间得到抽样值由1突变到0,没有逐渐衰弱的过渡带。

若抽样点之间的特性变化越剧烈,则内插与理想值的误差越大,因而再不连续点附近就会出现肩峰和起伏。

所以,为了改善特性,直观上看,应当增大长度N,增加一个可控制的过渡带,能按照特性要求,较精确地确定通带和阻带的边界频率值,这就是所谓滤波器设计优化,需要用线性规划的理论和相应的技术来解决。

参考文献:[1] 丁玉美,高西全,数字信号处理.西安;西安电子科技大学出版社[2] 黄文梅. 信号分析与处理. 长沙;国防科技大学出版社[3] 楼顺天,李伯菡. 基于Matlab的系统分析与设计. 西安;西安电子科技大学出版社[4] 罗军辉,罗勇江. Matlab在数字信号处理中的应用[5] 周浩敏,王睿. 测试信号处理技术. 北京航空航天大学出版社。