FIR低通滤波器设计.docx
《FIR低通滤波器设计.docx》由会员分享,可在线阅读,更多相关《FIR低通滤波器设计.docx(9页珍藏版)》请在冰豆网上搜索。
FIR低通滤波器设计
信息处理课程设计
姓名
班级
学院
学号
目录
一、前言
二、FIR滤波器简介
三、FIR低通滤波器的设计
四、FIR数字滤波器程序设计与仿真
五、小结
六、参考文献
一、前言
数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置)。
应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。
数字滤波器输入信号的抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即1/2抽样频率点呈镜像对称。
为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。
数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。
数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。
数字滤波器有低通、高通、带通、带阻和全通等类型。
它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。
应用最广的是线性、时不变数字滤波器,以及FIR滤波器。
二、FIR滤波器简介
FIR滤波器:
有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。
因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。
有限长单位冲激响应(FIR)滤波器有以下特点:
(1)系统的单位冲激响应h(n)在有限个n值处不为零;
(2)系统函数H(z)在|z|>0处收敛,极点全部在z=0处(因果系统);
(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
目前,FIR滤波器的硬件实现有以下几种方式:
1.数字集成电路FIR滤波器
一种是使用单片通用数字滤波器集成电路,这种电路使用简单,但是由于字长和阶数的规格较少,不易完全满足实际需要。
虽然可采用多片扩展来满足要求,但会增加体积和功耗,因而在实际应用中受到限制。
2.DSP芯片FIR滤波器
另一种是使用DSP芯片。
DSP芯片有专用的数字信号处理函数可调用,实现FIR滤波器相对简单,但是由于程序顺序执行,速度受到限制。
而且,就是同一公司的不同系统的DSP芯片,其编程指令也会有所不同,开发周期较长。
3.可编程FIR滤波器
还有一种是使用可编程逻辑器件,FPGA/CPLD。
FPGA有着规整的内部逻辑块整列和丰富的连线资源,特别适合用于细粒度和高并行度结构的FIR滤波器的实现,相对于串行运算主导的通用DSP芯片来说,并行性和可扩展性都更好。
三、FIR低通滤波器的设计
1.FIR滤波器的窗函数设计法
FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。
窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列。
FIR滤波器的设计问题在于寻求一系统函数,使其频率响应逼近滤波器要求的理想频率响应,其对应的单位脉冲响应。
设计思想:
从时域从发,设计逼近理想。
设理想滤波器的单位脉冲响应为。
以低通线性相位FIR数字滤波器为例。
一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。
要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。
按照线性相位滤波器的要求,h(n)必须是偶对称的。
对称中心必须等于滤波器的延时常数,即
用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。
为了消除吉布斯效应,一般采用其他类型的窗函数。
1.典型的窗函数
(1)矩形窗(RectangleWindow)
其频率响应和幅度响应分别为:
,
(2)三角形窗(BartlettWindow)
其频率响应为:
(3)汉宁(Hanning)窗,又称升余弦窗
其频率响应和幅度响应分别为:
(4)汉明(Hamming)窗,又称改进的升余弦窗
其幅度响应为:
(5)布莱克曼(Blankman)窗,又称二阶升余弦窗
其幅度响应为:
(6)凯泽(Kaiser)窗
其中:
β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。
I0(·)是第一类修正零阶贝塞尔函数。
若阻带最小衰减表示为,β的确定可采用下述经验公式:
若滤波器通带和阻带波纹相等即δp=δs时,滤波器节数可通过下式确定:
式中:
2.利用窗函数设计FIR滤波器的具体步骤如下:
(1)按允许的过渡带宽度△ω及阻带衰减AS,选择合适的窗函数,并估计节数N,其中A由窗函数的类型决定。
(2)由给定的滤波器的幅频响应参数求出理想的单位脉冲响应。
(3)确定延时值
(4)计算滤波器的单位取样响应,。
(5)验算技术指标是否满足要求。
实际设计过程中,上述几种窗函数可以根据对滤波器的过渡带宽度和阻带衰减的要求i,适当选取窗函数的类型和长度N,以得到比较满意的设计效果。
如何根据滤波器长度N的奇偶性,选择h(n)的奇偶对称性则是另外一个需要考虑的问题。
线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性,可以分为四种,它们具有不同的幅频和相位特性:
1.h(n)为偶对称,N为奇数:
H(e)=[h()+
它的幅度是关于点成偶对称。
2.h(n)偶对称,N为偶数:
H(e)=[h()+
它的幅度是关于成奇对称,处有零点,所以它不适合于作高通滤波器。
3.h(n)为奇对称,N为奇数
H(e)={
它的幅度是关于点成奇对称,H(e)在处都有零点。
因此它不适合于低通和高通。
4.h(n)为奇对称,N为偶对称
H(e)={+
它的幅度是关于点成奇对称。
h(e)在处有零点。
因此它不适于低通。
在滤波器设计过程中,只有根据上述四种线性相位滤波器传递函数的性质,合理地选择应采用的种类,构造出h(e)的幅频特性和相位特性,才能求得所需要的,具有单位脉冲响应的线性相位FIR滤波器传递函数。
窗函数法设计线性相位FIR滤波器可以按如下步骤:
1.确定数字滤波器的性质要求,确定各临界频率{}和滤波器单位脉冲响应长度N。
2.根据性能要求和N值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应h(e)的幅频特性和相位特性。
3.用傅里叶反变换公式,求得理想单位脉冲响应H(n)。
4.选择适当的窗函数W(n)根据式(4—3),求得所设计的FIR滤波器单位脉冲响应。
5.用傅里叶变换求得其频率响应H(e),分析他的频率特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述过程,直至得到满意结果。
注意:
上述步骤(3)中,从H(e)到h(n)的反变换要用的式(4--2)。
这里积分运算在计算机上可取数值解:
h(n)
其中0,而M,这样,数值解才能较好地逼近解析解。
2.程序设计法
MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。
3.FDATool设计法
FDATool(FilterDesign&AnalysisTool)是MATLAB信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计FIR和IIR滤波器。
在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。
4.SPTool设计法
SPTool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览。
四、FIR数字滤波器程序设计与仿真
设计一个低通数字FIR滤波器,指标如下:
ωp=0.2π,αp=0.25dB,ωs=0.3π,αs=50dB。
程序如下:
functionhd=id_lp(wc,N)
n=0:
N-1;
alp=(N-1)/2;
M=n-alp+eps;
hd=sin(wc*M)./(pi*N);
在MATLAB中利用freqz—m计算绝对和相对的幅度响应。
function[db,mag,pha,grd,w]=freqz_m(b,a)
[h,w]=freqz(b,a,1000,’whole’);
h=(h(1:
501))’;
w=(w(1:
501))’;
mag=abs(h);
db=20*log10((mag+eps)/max(mag));
pha=angle(h);
grd=grpdelay(b,a,w);
clear;%清除MATLAB工作空间中内存变量
%用海明窗设计低通滤波器
wp=0.2*pi;
ws=0.3*pi;
tr_width=ws-wp;
%过度带带宽
N=ceil(6.6*pi/tr_width)+1;
%滤波器的长度,N=奇数为1型,N=偶数为2型
disp([‘滤波器的长度为’,num2str(N)]);
n=0:
N-1;
wc=(ws+wp)/2;
%理想低通滤波器的截止频率
hd=id_lp(wc,N);
%理想低通滤波器的单位脉冲响应
w_ham=(hamming(N))’;
%海明窗
h=hd.*w_ham;
%截取得到的实际单位脉冲响应
[db,mag,pha,grd,w]=freqz_m(h,[1]);
%计算实际滤波器的幅度响应
delta_w=2*pi/1000;
ap=-(min(db(1:
1:
wp/delta_w+1)));
%求出实际通带波动
as=-round(max(db(ws/delta_w+1:
1:
501)));
%求出最小阻带衰减
%绘图
subplot(231);
stem(n,hd);
title(‘理想冲激响应’);
ylabel(‘hd(n)’);
subplot(232);
stem(n,w_ham);
title(‘海明窗w(n)’);
ylabel(‘w(n)’);
subplot(233);
stem(n,h);
title(‘实际冲激响应)’);
ylabel(‘h(n)’);
subplot(234);
plot(w/pi,db);
title(‘幅度特性)’);
subplot(235);
plot(w/pi,pha);
title(‘相位特性’);
ylabel(‘弧度’);
图FIR低通滤波器的幅度特性和相位特性
五、小结
本次课程设计通过一个设计实例,向我们介绍了利用MATLAB实现FIR滤波器设计与滤波的三种方法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。
我在滤波器的设计工作完成后,借助了MATLAB的export操作导出所设计滤波器的系统函数H(z)。
并且由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的移植到DSP、CPLD或FPGA等器件中。
但是在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。
我在编写程序过程中犯了不少低级错误,这很不应该。
还有一些重大错误在同学的帮助下,我都找了出来并且改正正确了。
这次课程设计让我获益颇多。
六、参考文献
董长虹等.MATLAB信号处理与应用.北京:
国防工业出版社,2005
[