FIR 数字滤波器设计一、摘 要数字滤波器是一种具有频率选择性的离散线性系统,在信号数字处理中有着广泛的应用。
其中FIR 滤波器是一种常用的滤波器,它在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性,在语音分析、图像处理、雷达监测等对信号相位要求高的领域有着广泛的应用,能实现IIR 滤波器不能实现的许多功能。
二、关键词: FIR 窗函数 系统函数 MATLAB三、设计要求设计理想特性FIR 线性数字相位数字滤波器⎩⎨⎧≤≤-≤≤-=其他0,1)(ππw w w w e H c c iw d (1)求单位冲激响应)(n h(2)设4π=c w ,)(n h 的长度N=21,编写求)(n h 的Matlab 程序,并上机输出矩形窗设计和海明窗设计的)(n h 。
四、 设计目的1、学会MATLAB 的使用,掌握MATLAB 的程序设计方法;2、掌握数字信号处理的基本概念、基本理论和基本方法;3、掌握MATLAB 设计FIR 线性数字相位数字滤波器的方法;4、学会用MATLAB 对信号进行分析和处理。
五、设计意义数字滤波器是数字信号处理的重要组成部分,可作为应用系统对信号的前置处理。
同时用DSP 芯片实现数字滤波除了具有稳定性好、精确度高、不受外界影响等优点外,还具有灵活性好的特点,可对DSP芯片编程来实现数字滤波的参数修改,进而十分方便地修改滤波器的特性。
因此基于数字信号处理的数字滤波被广泛应用于语音、图像、软件无线电等领域,具有广阔的发展空间。
FIR滤波器具有严格的线性相位,可以具有任意的幅度特性,且是可物理实现的因果系统,因此被广泛地应用在现代通信技术当中,如解调器中的位同步和位定时提取、自适应均衡去码间串扰以及话音的自适应编码等。
可见对FIR滤波器的研究是具有非常重要的现实意义的。
六、设计原理1、MATLAB概述MATLAB是美国MathWorks公司开发的一种功能极其强大的高技术计算语言和内容极其丰富的软件库,集数值计算、矩阵运算和信号处理和显示于一身。
该软件最初是由美国教授Cleve Moler创立的。
1980年前后,他在教线性代数课程时,发现用其他高级语言编程时极不方便,便构思开发了MATLAB,即矩阵实验室(Matrix Laboratory)。
该软件利用了当时代表数值线性代数领域最高水平的EISPACK和LINPACK两大软件包,并且利用Fortran语言编写了最初的一套交互式软件系统,MATLAB的最初版本便由此产生了。
最初的MATLAB由于语言单一,只能进行矩阵的运算,绘图也只能用原始的描点法,内部函数只有几十个,因此功能十分简单。
1984年该公司推出了第一个MATLAB的商业版,并用C语言作出了全部改写。
现在的MATLAB 程序是MathWorks公司用C语言开发的,第一版由steve Bangert主持开发编译解释程序,Steve Kleiman完成图形功能的设计,John Little和Cleve Moler主持开发了各类数学分分析的子模块,撰写用户指南和大部分的M文件。
接着又添加了丰富的图形图像处理、多媒体功能、符号运算和和其它流行软件的接口功能,使MATLAB的功能越来越强大。
MTALAB系统主要由以下五个部分组成:(1)MATALB语言体系。
MATLAB是高层次的矩阵/数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。
利用它既可以进行小规模端程,完成算法设计和算法实验的基本任务,也可以进行大规模编程,开发复杂的应用程序。
(2)MATLAB工作环境。
这是对MATLAB提供给用户使用的管理功能的总称。
包括管理工作空间中的变量据输入输出的方式和方法,以及开发、调试、管理M文件的各种工具。
(3)图形句相系统。
这是MATLAB图形系统的基础,包括完成2D和3D数据图示、图像处理、动画生成、图形显示等功能的高层MATLAB命令,也包括用户对图形图像等对象进行特性控制的低层MATLAB命令,以及开发GUI 应用程序的各种工具。
(4)MATLAB数学函数库。
这是对MATLAB使用的各种数学算法的总称。
包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法。
(5)MATLAB应用程序接口(API)。
这是MATLAB为用户提供的一个函数库,使得用户能够在MATLAB环境中使用C程序或FORTRAN程序,包括从MATLAB中调用于程序(动态链接),读写MAT文件的功能。
2、数字滤波器概述数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。
因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。
数字滤波器,输入输出均为数字信号,通过一定的运算关系,改变输入信号中所含频率成分的相对比例,或则滤除某些频率成分的器件。
对于数字滤波器而言,若系统函数为H(z),其脉冲响应为h(n),输入时间序列为x(n),则它们在时域内的关系式如下:y(n)=h(n)﹡x(n)在Z 域内,输入和输出存在如下关系:Y(z)= H(z)X(z)式中,X(z)、Y(z)分别为x(n)和y(n)的Z 变换。
在频域内,输入和输出则存在如下关系:Y(j ω)=H(j ω)X(j ω)式中,H(j ω)是数字滤波器的频率特性;X(j ω)Y(j ω)分别为x(n)和y(n)的频谱,而ω为数字角频率。
3、FIR 数字滤波器的基本结构及设计流程(1)FIR 数字滤波器的基本结构在讨论任何一种滤波器时,都要着重分析其系统函数,FIR 滤波器的系统函数为:n N n z n h z H ∑-==10)()( 。
从该系统函数可看出,FIR 滤波器有以下特点:①系统的单位冲激响应h(n)在有限个n 值处不为零;②系统函数H(z)在|z|>0处收敛,极点全部在z=0处(稳定系统); ③结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。
(2)FIR 数字滤波器的设计流程图为:4、窗函数设计法(矩形窗、海明窗) 窗函数设计法也称为傅立叶级数法。
其设计是在时域进行的,先用傅氏反变换求出理想数字滤波器的单位抽样响应h d (n),然后时域移位并加时间窗w(n)对其截断,从而求得FIR 滤波器的单位抽样响应h(n);)()()(n w n h n h d ⋅=在设计过程中,将无限长序列变为有限长是通过时域加矩形窗乘积实现数据的截断的。
时域乘积对应了频域卷积,从而对频响特征发生的改变。
常见的窗函数有:矩形窗、三角形(Bartlertt)窗、汉宁(Hanning)窗。
海明(Hamming)窗、布拉克曼(Blackman)窗、凯泽(kaiser)窗等。
(1) 矩形窗(Rectangle Window )()()n N R n =ω其频谱函数为: ()()()()ωωωωω⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛--==21212sin 2N sin N j R N j j e n W e e W其幅度函数为: ()()()2sin 2Nsin ωωω=W(2) 海明窗(Hamming Window ) 海明(Hamming)窗,又称改进的升余弦窗)()]12cos(46.054.0[)(n R N n n w N --=π 其频谱函数为:]e e[23.0)e (54.0)e ()12(j )12(j j j -+--+-=N R N R R W W W W πωπωωω其幅度函数为: )]12()12([23.0)(54.0)(-++--+=N W N W W W R R R πωπωωω 七、设计内容1、设计理想特性FIR 线性数字相位数字滤波器其频率响应为 ⎩⎨⎧≤≤-≤≤-=其他,0,,1)(ππw w w w e H c c iw d 所以,它所对应的单位抽样响应为ωπππd )(21)n (h n iw iw d d e e H ⎰-= ωπωππωωπd 21d 21n j n j c c w w e e ⎰⎰+=-- ⎥⎦⎤⎢⎣⎡-+-=)()(n j n j n j -n j -c c e e jn 1e e jn 121ωππωπ ⎥⎦⎤⎢⎣⎡-+-=)()(n j -n j n j n j -e e jn 1e e jn 121c c ππωωππωn n Sin c -=显然,)n (h d 是一个无限长、非因果的序列。
但由于FIR 滤波器的单位抽样响应是有限长的,所以需要寻求一个有限长序列)n (h 来逼近)n (h d 。
得到有限长序列的一种简便方法是运用相关窗函数)n (ω对)n (h d 进行截断处理(加窗处理)。
因此,本题设计滤波器的单位冲激响应)(n h 为()()()()n n n h n h d ωπωωn n Sin c -== 2、利用相关窗函数进行加窗,题设4π=c w ,)(n h 的长度N=21。
(1)利用矩形窗进行加窗处理 窗函数 ()()⎩⎨⎧-≤≤==其他,01N n ,01n N R n ω 加窗处理后,该数字滤波器的单位冲击响应)(n h 为()()⎪⎪⎩⎪⎪⎨⎧≤≤-==其他,020n ,04n n n h )(d ππωn Sin n h (2)利用海明窗进行加窗处理窗函数 ()()n R 1N n 2cos 6.404.50N ⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=πωn 加窗处理后,该数字滤波器的单位冲击响应)(n h 为()⎪⎪⎩⎪⎪⎨⎧≤≤⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=其他,020n ,0n R 10n cos 6.404.504n )(21πππn Sin n h 3、利用MATLAB 软件编写计算求解)(n h 的相关程序。
(1)矩形窗设计法(相应程序)b2=fir1(20,0.25);%系数h2=freqz(b2,1,20)n=0:20;subplot(221);stem(n,b2,'.');grid;f=0:0.5/20:0.5-0.5/20频谱显示程序为clear;clc;N=21;%阶数,可以用过渡带来计算wc=0.25;%wc 是过渡带中心,要除以pihn=fir1(N,wc,boxcar(N+1));freqz(hn,1)(2)海明窗设计法(相应程序)b1=fir1(20,0.25,rectwin(21));h1=freqz(b1,1,20);n=0:20;subplot(221);stem(n,b1,'.');hold on;grid;f=0:0.5/20:0.5-0.5/20;频谱显示程序为clear;clc;N=21;wc=0.25*pi; % 若为圆周角频率window=hamming(N+1);b=fir1(N,wc/pi,'low',window); % 注意里面用归一化频率freqz(b);八、结果分析(1)矩形窗设计法矩形窗设计的的单位冲激响应)h(n矩形窗设计的耗损函数和相频特性曲线(2)海明窗设计法海明窗设计的的单位冲激响应)h(n海明窗设计的耗损函数和相频特性曲线九、设计心得在实践中掌握知识———记课程设计心得体会近日,我们开始了本学期的最后一次课程设计。