窗函数设计FIR数字滤波器
- 格式:docx
- 大小:344.88 KB
- 文档页数:22
FIR 数字滤波器设计函数1. fir1功能:基于窗函数的FIR 数字滤波器设计——标准频率响应。
格式:b=fir1(n,Wn)b=fir1(n,Wn,'ftype')b=fir1(n,Wn,Window)b=fir1(n,Wn,'ftype',Window)说明:fir1函数以经典方法实现加窗线性相位FIR 滤波器设计,它可设计出标准的低通、带通、高通和带阻滤波器。
b=fir1(n,Wn)可得到n 阶低通FIR 滤波器,滤波器系数包含在b 中,这可表示成:n z n b z b b z b --++⋅⋅⋅++=)1()2()1()(1这是一个截止频率为Wn 的Hamming(汉明)加窗线性相位滤波器,0≤Wn ≤1,Wn=1相应于0.5fs 。
当Wn=[W1 W2]时,fir1函数可得到带通滤波器,其通带为W1<ω< W2。
b=fir1(n,Wn,'ftype')可设计高通和带阻滤波器,由ftype 决定:·当ftype=high 时,设计高通FIR 滤波器;·当ftype=stop 时,设计带阻FIR 滤波器。
在设计高通和带阻滤波器时,fir1函数总是使用阶为偶数的结构,因此当输入的阶次为奇数时,fir1函数会自动加1。
这是因为对奇数阶的滤波器,其在Nyquist 频率处的频率响应为零,因此不适合于构成高通和带阻滤波器。
b=fir1(n,Wn,Window)则利用列矢量Window 中指定的窗函数进行滤波器设计,Window 长度为n+1。
如果不指定Window 参数,则fir1函数采用Hamming 窗。
Blackman 布莱克曼窗Boxcar 矩形窗Hamming 海明窗Hann 汉宁窗Kaiser 凯瑟窗Triang 三角窗b=fir1(n,Wn,'ftype',Window)可利用ftype 和Window 参数,设计各种加窗的滤波器。
FIR数字滤波器的(海明)窗函数法设计1.课程设计目的(1)熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数。
(2)加深对FIR数字滤波器设计的理解,并用窗函数法进行FIR数字滤波器的设计。
(3)将设计出来的FIR数字滤波器利用MATLAB进行仿真。
(4)对一段音频文件进行加入噪声处理,对带有噪声的文件进行滤波处理。
2.设计方案论证2.1 Matlab语言概述MATLAB是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求。
随着版本的不断升级,内容不断扩充,功能更加强大,从而被广泛应用于仿真技术、自动控制和数字信号处理领域。
此高级语言可用于技术计算此开发环境可对代码、文件和数据进行管理交互式工具可以按迭代的方式探查、设计及求解问题数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数积分等二维和三维图形函数可用于可视化数据各种工具可用于构建自定义的图形用户界面各种函数可将基于MATLAB的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM 以及Microsoft Excel)集成不支持大写输入,内核仅仅支持小写2.2声音处理语音是人类获取信息的重要来源和利用信息的重要手段。
语音信号处理是一门发展十分迅速,应用非常广泛的前沿交叉学科,同时又是一门跨学科的综合性应用研究领域和新兴技术。
声音是一种模拟信号,而计算机只能处理数字信息0和1。
因此,首先要把模拟的声音信号变成计算机能够识别和处理的数字信号,这个过程称为数字化,也叫“模数转换”。
在计算机对数字化后的声音信号处理完后,得到的依然是数字信号。
必须把数字声音信号转变成模拟声音信号,然后再图1 选择windows下的录音机”或是点击快捷按钮图5 加噪后语音信号和频谱图7 滤波器幅频特性与相频特性设计的滤波器是用单位采样响应h(n)表示的,可以利用带噪声语音图8滤波器系统函数。
信号、系统与信号办理实验Ⅱ实验报告实验名称:用窗口法设计FIR数字滤波器一、实验目的认识一个实质滤波器的设计过程,加深掌握用窗口法设计FIR数字滤波器的原理和窗函数对数字滤波器性能的影响二、实验内容与要求1.编写用改良的升余弦窗设计FIR线性相应低通数字滤波器的程序,已知wc=,N=21。
这里wc为低通滤波器的截止频次,N为滤波器的长度,滤波器的阶数为N-1。
2.调试运转程序,要求在屏幕上显示出单位脉冲响应h(n)的数值。
画出其幅度响应|H(ejw)|及20log10|H(ejw)|的曲线。
3.画出窗函数w(n)及其频谱|W(ejw)|和20log10|W(ejw)|的曲线。
三、实验程序与结果clear all;N=21;wc=*pi;b=fir1(N-1,wc/pi,hamming(N))freqz(b,1,512);h(n)的数值即b:b=Columns1through11Columns12through21 clear all;N=21;wc=*pi;r=(N-1)/2;n=0:N-1;hdn=sin(wc*(n-r))/pi./(n-r);if rem(N,2)~=0hdn(r+1)=wc/pi;endwn=hamming(N);h=hdn.*wn';H=fft(h,512);W=fft(wn,512);w=2*[0:511]/512;figure;subplot(3,1,1);plot(wn);subplot(3,1,2);plot(w,abs(W));ylabel('|W(eiw)|') subplot(3,1,3);plot(w,20*log10(abs(W))); ylabel('20lg|W(eiw)|'); figure;subplot(2,1,1);plot(w,abs(H));ylabel('|H(eiw)|') subplot(2,1,2);plot(w,20*log10(abs(H))); ylabel('20lg|H(eiw)|');四、仿真结果剖析图一是FIR低通滤波器的幅频和相频特征图图二是滤波器设计过以后的幅度特征图三是窗函数的幅度特征FIR滤波器的设计过程在于运用海明窗口进行设计,依据定义h(n)=hd(n)*w(n)出发来求出w(n)的值。
武汉理工大学《Matlab课程设计》报告目录摘要 (I)Abstract (II)1 原理说明 (1)1.1 数字滤波技术 (1)1.2 FIR滤波器 (1)1.3 窗函数 (2)1.4 MATLAB简介 (4)1.5 MATLAB结合窗函数设计法原理 (4)2 滤波器设计 (2)2.1 滤波器设计要求 (2)2.2 设计函数的选取 (2)2.3 窗函数构造 (3)2.4 设计步骤 (4)2.5 利用MATLAB自带函数设计 (4)3 滤波器测试 (9)3.1 滤波器滤波性能测试 (9)3.2 滤波器时延测量................................................................................错误!未定义书签。
3.3 滤波器稳定性测量............................................................................错误!未定义书签。
5 参考文献 (12)附件一: ........................................................................................................ 错误!未定义书签。
摘要现代图像、语声、数据通信对线性相位的要求是普遍的。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。
因此,具有线性相位的FIR数字滤波器在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
)(9cos 15.0)(12cos 15.0)(1919n R n n R N n n w ⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=ππ2.3进行语音信号的采集(1)按“开始”-“程序”-“附件”-“娱乐”-“录音机”的顺序操作打开Window s系统中的录音机软件。
如图1所示。
图1 wi ndows 录音机(2)用麦克风录入自己的声音信号并保存成wav 文件。
如图2所示。
图2 保存文件保存的文件按照要求如下:① 音信号文件保存的文件名为“y uxueji ao.wav ”。
②语音信号的属性为“8.000KH z,8位,单声道 7KB /秒” ,其它选项为默认。
2.4语音信号的分析将“yu xuejiao .wav ”语音文件复制到计算机装有Ma tlab 软件的磁盘中相应Mat lab目录中的“work ”文件夹中。
打开Matlab 软件,在菜单栏中选择“File ”-图3语音信号的截取处理图在图3中,其中第一个图为原始语音信号;第二个图是截短后的信号图。
图4频谱分析图其中第二个图是信号的FFT 结果,其横坐标的具体值是X (k)中的序号k;第三个图是确定滤波频率范围的参考图,其横坐标的具体值应当是遵循DFT 定义式和频率分辨率求得的:∑-===10)()]([)(N n k N W n x n x DFT k X π当k等于0时, 020j kn Njk knNe eW ==⋅-=π,从数字角频率上看,对应的正好是0=ω即直流的位置,也就是说,在取滤波频段时,当将主要能量(即红色框的部分)保留,其余频段部分的信号滤除。
)]([)(n x DFT k X =相当于是信号)(n x 的实际频谱)]([)(n x DFT ej X w =采样,而)(n x 又是连续时间语音信号)(t x 的采样。
)(k X 的每两个相邻取值之间的频率间隔大小对应到语音信号)(n x 的频谱中去,其频率间隔大小正好是采样结果的长度采样速率===∆L f f f s det f ∆称频率分辨率,其中Hz f s 8000=,10000=L ,p2=sum(s2.^2)-sum(s1.^2);SNR1=10*log10(p1/p2);p3=sum(s4.^2)/8000;p4=sum(s3.^2)/8000-sum(s4.^2)/8000;SNR2=10*log10(p3/p4);2.6 噪声叠加图5 语音信号与加噪声后语音信号对比图五为语音信号与加噪声后语音信号对。
实验四用窗函数设计FIR滤波器一、实验目的1.熟悉FIR滤波器设计的基本方法。
2.掌握用窗函数设计FIR数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3.熟悉线性相位FIR滤波器的幅频特性和相位特性。
4.了解各种不同窗函数对滤波器性能的响应。
二、实验原理与方法(一)FIR滤波器的设计目前FIR滤波器的设计方法主要有三种:窗函数法、频率取样法和切比雪夫等波纹逼近的最优化设计方法。
常用的是窗函数法和切比雪夫等波纹逼近的最优化设计方法。
本实验中的窗函数法比较简单,可应用现成的窗函数公式,在技术指标要求不高的时候是比较灵活方便的。
它是从时域出发,用一个窗函数截取理想的得到h(n),以有限长序列h(n)近似理想的;如果从频域出发,用理想的在单位圆上等角度取样得到H(k),根据h(k)得到H(z)将逼近理想的,这就是频率取样法。
(二)窗函数设计法同其它的数字滤波器的设计方法一样,用窗函数设计滤波器也是首先要对滤波器提出性能指标。
一般是给定一个理想的频率响应,使所设计的FIR滤波器的频率响应去逼近所要求的理想的滤波器的相应。
窗函数法设计的任务在于寻找一个可实现(有限长单位脉冲响应)的传递函数。
去逼近。
我们知道,一个理想的频率响应的傅理叶变换所得到的理想单位脉冲响应往往是一个无限长序列。
对经过适当的加权、截断处理才得到一个所需要的有限长脉冲响应序列。
对应不同的加权、截断,就有不同的窗函数。
所要寻找的滤波器脉冲响应就等于理想脉冲响应和窗函数的乘积。
即,由此可见,窗函数的性质就决定了滤波器的品质。
以下是几种常用的窗函数:1.矩形窗:2.Hanning窗:3.Hamming窗:4.Blackman窗:5.Kaiser窗:窗函数法设计线性相位FIR滤波器可以按如下步骤进行:1.确定数字滤波器的性能要求。
确定各临界频率{}和滤波器单位脉冲响应长度N。
2.根据性能要求和N值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应的幅频特性和相位特性。
实验六用窗函数法设计FIR滤波器分析解析一、引言数字滤波器是数字信号处理中的重要组成部分。
滤波器可以用于去除噪声、调整频率响应以及提取感兴趣的信号。
有许多方法可以设计数字滤波器,包括窗函数法、频域法和优化法等。
本实验将重点介绍窗函数法设计FIR滤波器的原理和过程。
二、窗函数法设计FIR滤波器窗函数法是设计FIR滤波器的一种常用方法。
其基本原理是将滤波器的频率响应与理想滤波器的频率响应进行乘积。
理想滤波器的频率响应通常为矩形函数,而窗函数则用于提取有限长度的理想滤波器的频率响应。
窗函数的选择在FIR滤波器的设计中起着重要的作用。
常用的窗函数包括矩形窗、汉宁窗、汉明窗、布莱克曼窗等。
对于每种窗函数,都有不同的特性和性能指标,如主瓣宽度、副瓣抑制比等。
根据不同的应用需求,可以选择合适的窗函数。
窗函数法设计FIR滤波器的具体步骤如下:1.确定滤波器的阶数N。
阶数N决定了滤波器的复杂度,一般情况下,阶数越低,滤波器的简单度越高,但频率响应的近似程度也会降低。
2.确定滤波器的截止频率。
根据应用需求,确定滤波器的截止频率,并选择合适的窗函数。
3.根据窗函数长度和截止频率计算理想滤波器的频率响应。
根据所选窗函数的特性,计算理想滤波器的频率响应。
4.根据理想滤波器的频率响应和窗函数的频率响应,得到所需的FIR滤波器的频率响应。
将理想滤波器的频率响应与窗函数的频率响应进行乘积,即可得到所需滤波器的频率响应。
5.对所得到的频率响应进行逆傅里叶变换,得到时域的滤波器系数。
6.实现滤波器。
利用所得到的滤波器系数,可以通过卷积运算实现滤波器。
三、实验结果与分析本实验以Matlab软件为平台,利用窗函数法设计了一个低通滤波器。
滤波器的阶数为16,截止频率为500Hz,采样频率为1000Hz,选择了汉宁窗。
根据上述步骤,计算得到了所需的滤波器的频率响应和时域的滤波器系数。
利用这些系数,通过卷积运算,实现了滤波器。
为了验证滤波器的性能,将滤波器应用于输入信号,观察输出信号的变化。
基于汉明窗函数的FIR低通滤波器设计及性能分析FIR低通滤波器是一种常用的数字滤波器,用于处理数字信号中频率较低的成分,将高频成分滤除。
在设计FIR低通滤波器时,常使用汉明窗函数来实现。
本文将介绍基于汉明窗函数的FIR低通滤波器的设计方法和性能分析。
首先,要设计一个FIR低通滤波器,需要确定以下几个参数:滤波器阶数N、采样频率fs、截止频率fc和窗函数类型。
本文将以汉明窗函数为例,演示如何设计FIR低通滤波器。
1. 滤波器阶数N的确定:滤波器阶数N决定了滤波器的复杂度和性能。
一般来说,阶数越高,滤波器的性能越好,但计算复杂度也相应增加。
因此,需要在滤波器性能和计算复杂度之间做出平衡。
常用的方法是根据滤波器的截止频率和采样频率来确定阶数N。
一般可以使用公式N=4fs/fc来初步估计阶数N,然后根据实际需求进行调整。
2. 窗函数的选择:本文选择汉明窗函数作为设计FIR低通滤波器的窗函数。
汉明窗函数在频域上具有较好的副瓣抑制性能,适合用于低通滤波器设计。
3. 窗函数的定义:汉明窗函数的表达式为:w(n) = 0.54 - 0.46*c os(2πn/(N-1)), 0 ≤ n ≤ N-1其中,N为窗函数的长度,n为窗函数的离散时间索引。
4. FIR低通滤波器的设计:设计FIR低通滤波器的步骤如下:1)确定滤波器阶数N;2)选择截止频率fc;3)计算滤波器系数h(n);4)对滤波器系数h(n)进行归一化处理。
5. 滤波器系数的计算:滤波器系数h(n)的计算公式为:h(n) = wc/pi * sinc(wc*(n-(N-1)/2)/pi)其中,wc为归一化的截止频率,wc=2πfc/fs。
sinc(x)为正弦函数sin(x)/x。
6. 归一化处理:对滤波器系数h(n)进行归一化处理,即将系数乘以汉明窗函数的值。
即:hn(n) = h(n) * w(n),0 ≤ n ≤ N-17. 性能分析:设计完毕后,需要进行性能分析来评估滤波器的性能。
窗函数设计fir滤波器的原理
FIR滤波器是数字信号处理中常用的一种滤波器,其特点是具有线性相位和稳定性。
在FIR滤波器中,窗函数是一种常用的设计方法,它可以用来控制滤波器的频率响应和滤波器的截止频率等参数。
窗函数的设计原理是基于信号的截断和补零,即将信号限制在一个有限的时间段内,并在信号的两端补零,使得信号在有限时间内变得平滑。
这样做的目的是为了避免信号在频域上出现不必要的波动,从而影响滤波器的性能。
在FIR滤波器中,窗函数的设计可以分为两个步骤:首先选择一个合适的窗函数,然后将该窗函数与理想滤波器的频率响应相乘,得到实际滤波器的频率响应。
常用的窗函数包括矩形窗、汉明窗、汉宁窗、布莱克曼窗等。
其中,矩形窗是最简单的窗函数,其频率响应为常数,但其截止频率较高,不适合用于滤波器的设计。
汉明窗和汉宁窗的频率响应较为平滑,但其截止频率较低,适合用于低通滤波器的设计。
布莱克曼窗的频率响应最为平滑,但其计算较为复杂,适合用于高精度的滤波器设计。
在选择窗函数后,需要将其与理想滤波器的频率响应相乘,得到实际
滤波器的频率响应。
理想滤波器的频率响应可以通过傅里叶变换得到,其截止频率和通带宽度可以根据滤波器的设计要求进行调整。
将窗函
数与理想滤波器的频率响应相乘后,得到的实际滤波器的频率响应可
以通过傅里叶反变换得到时域响应,从而得到滤波器的系数。
总之,窗函数是一种常用的FIR滤波器设计方法,其原理是通过信号
的截断和补零来控制滤波器的频率响应和截止频率等参数。
在设计过
程中,需要选择合适的窗函数,并将其与理想滤波器的频率响应相乘,得到实际滤波器的频率响应,从而得到滤波器的系数。
实验六用窗函数设计FIR滤波器一、引言数字滤波器是用于处理数字信号的重要工具,而FIR(Finite Impulse Response)滤波器是其中一类常见的滤波器。
在FIR滤波器中,输出信号的每个样本值仅依赖于输入信号在过去固定时间窗口内的样本值。
窗函数则是用于设计FIR滤波器的一种常见方法。
本实验将介绍如何用窗函数设计FIR滤波器,并通过一系列实验验证其性能。
二、实验目的1.了解FIR滤波器的原理和窗函数设计方法。
2.利用MATLAB工具进行FIR滤波器设计与性能评估。
3.分析不同窗函数对FIR滤波器的影响。
三、窗函数设计方法在设计FIR滤波器时,可以通过选择不同的窗函数来实现不同的频率响应。
常见的窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗等。
在本实验中,我们将以汉宁窗为例进行讲解。
1.首先确定滤波器的截止频率和通带误差。
2.根据通带误差和滤波器的截止频率计算阶数。
3.根据阶数选择合适大小的窗口长度。
4.选择合适的窗函数,如汉宁窗。
5.计算窗函数的系数,并与理想滤波器的冲击响应相乘得到最终的滤波器系数。
四、实验步骤1.确定滤波器参数:截止频率、通带误差等。
2.根据通带误差和截止频率计算滤波器的阶数。
3.选择合适大小的窗口长度,通常选择大于滤波器阶数的2倍。
4.选择窗函数,如汉宁窗,计算窗函数的系数。
5.根据窗函数系数和截止频率计算滤波器的系数。
6.绘制滤波器的频率响应曲线。
7.利用设计好的FIR滤波器对输入信号进行滤波,并观察滤波效果。
五、实验结果与分析在本实验中,我们选择了截止频率为1kHz的低通滤波器。
首先计算滤波器的阶数,假设通带误差为0.01,根据公式可得N=3.32/((截止频率*通带误差)/采样频率)≈60。
我们选择窗口长度为120,即滤波器的阶数的两倍。
接下来选择汉宁窗作为窗函数,并计算其系数。
最后通过窗函数系数和截止频率计算得到滤波器的系数。
实验采用不同窗函数设计的FIR滤波器进行滤波,观察不同窗函数对滤波器性能的影响。
目录1. 滤波简介 (1)1.1 数字滤波技术 (1)1.2 FIR滤波器 (1)1.3 设计方法 (2)1.3.1 MATLAB结合窗函数设计方法 (2)1.3.2 设计函数的选取 (2)1.3.3 窗函数的构造 (3)1.3.4 窗函数的设计条件 (3)2. 基本窗函数 (5)2.1 矩形窗 (5)2.2 三角形窗 (5)2.3 汉宁窗(升余弦窗) (5)3. 各类窗函数比较 (7)3.1 窗函数绘图比较 (7)3.2 窗函数法设计步骤 (7)3.3 窗函数法设计比较 (8)4. 具体设计内容 (13)4.1 矩形窗设计 (13)4.2 三角窗设计 (14)4.3 布莱克曼窗设计 (16)4.4 结果分析 (18)5. 课设心得 (19)参考文献 (20)本科生课程设计成绩评定表 (21)1. 滤波简介1.1 数字滤波技术数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比例,所以实质上是一种程序滤波。
与此对应的就是模拟滤波,模拟滤波主要无源滤波(由电阻、电容、电感等不外接电源的元件组成)与有源滤波(由运算放大器等需要外接电源的元件组成),其目的是将信号中的噪音和干扰信号滤去或者将希望得到的频率信号滤出为我所用。
数字滤波的出现克服了模拟滤波的很多不足,具有以下优点:1.是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。
2.可以对频率很低的信号实现滤波,克服了模拟滤波的缺陷。
3.可以根据不同信号采用不同的滤波方法或参数,具有灵活、方便、功能强的特点。
1.2 FIR滤波器FIR滤波器是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位冲激响应是有限的,没有输入到输出的反馈,是稳定的系统。
FIR滤波器具有以下主要优点:1.FIR滤波器具有严格的线性相位;2.FIR滤波器永远稳定;3.FIR滤波器设计方法一般是线性的;4.FIR滤波器在硬件上具有更高的运行效率;5.FIR滤波器启动传输时间只需要有限时间。
FIR滤波器的主要缺点有:1.FIR滤波器为达到同样的性能要求需要比IIR滤波器高得多的阶数;2.相应的FIR滤波器的时延比同等性能的IIR滤波器高很多。
FIR滤波器的硬件实现主要有数字集成芯片,DSP芯片FIR滤波器,可编程FIR滤波器,后两者的实际方法主要通过MATLAB软件进行设计,其设计方法多样,形式灵活,能够满足各种要求,并且不受数字集成芯片规格的限制。
1.3 设计方法1.3.1 MATLAB结合窗函数设计方法MATLAB作为一款优秀的数值计算软件,本身就内置了丰富的函数,其中便有用于通信仿真的一系列函数,并且MATLAB中还集成了通信设计的工具箱,不管是内置的函数,还是通信工具箱,均有专用于滤波器设计的工具,常用的主要有用函数法设计和用通信工具箱设计。
1.3.2 设计函数的选取MATLAB信号处理工具箱提供了基于加窗的线性相位FIR滤波器设计函数fir1和fir2,fir1函数的调用格式为:b=fir1(n,Wn)b=fir1(n,Wn,'ftype')b=fir1(n,Wn,window)b=fir1(n,Wn,'ftype',window)b=fir1(…..,'normalization')函数参数说明如下:1.n表示滤波器的阶数2.'ftype'表示所设计滤波器的类型:3.'high'表示高通滤波器4.'stop'表示带阻滤波器5.'DC-1'表示多通带滤波器,第一频带为通带6.'DC-0'表示多通带滤波器,第一频带为阻带;默认时为低通或带通滤波器;7.'window'为窗函数,是长度为n+1的列向量,默认时函数自动取hamming窗。
该函数实现加窗的线性相位FIR滤波器设计,可以设计标准低通、带通、高通和带阻滤波器1.3.3 窗函数的构造MATLAB工具箱已经提供了各种窗函数的构造函数,因而窗函数的构造十分方便,下面给出几种常用窗函数的构造方法:1.矩形窗:利用w=boxcar(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。
‘w=boxcar(n)’等价于‘w=ones(1,n)’.2.三角窗:利用w=triang(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w 为一个n阶的向量,它的元素由窗函数的值组成。
w=triang(N-2)等价于bartlett(N)。
3.汉宁窗:利用w=hanning(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。
4.布莱克曼窗:利用w=blackman(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。
它的主瓣宽度是矩形窗主瓣宽度的3倍,为12π/N,但是它的最大旁瓣值比主瓣值低57dB。
5.凯泽窗:利用w=kaiser(n,beta)的形式得到窗函数。
1.3.4 窗函数的设计条件在使用窗函数设计滤波器时要满足以下两个条件:(1)主瓣尽可能窄,以使设计出来的滤波器有较陡的过渡带。
(2)尽量减少最大旁瓣的相对幅度,也就是能量集中于主瓣,以减小带内、带外波动的最大幅度,增大阻带衰减。
一般来说,以上两点很难同时满足。
当选取主瓣宽度很窄时,旁瓣的分量势必增加,从而带内、带外的波动也增加了;当选取最小的旁瓣幅度时,降低了带内、带外的波动,但是过渡带的陡度减小了。
所以实际采用的窗函数其特性往往是它们的折中,在保证主瓣宽度达到一定要求的前提下,适当牺牲主瓣宽度来换取旁瓣波动的减小。
实际工程常用的窗函数有五种,即矩形窗、三角窗、汉宁窗、海明窗和凯泽窗。
这些窗函数之间的性能比较如下表所示。
表格 1 各窗函数性能2. 基本窗函数2.1 矩形窗矩形窗(Rectangular Window )函数的时域形式可以表示为:⎩⎨⎧-≤≤==其他,010,1)()(N n n R n w N(公式2-1) 它的频域特性为:()⎪⎭⎫ ⎝⎛⎪⎭⎫⎝⎛=⎪⎭⎫ ⎝⎛--2sin 2sin e e 21j j ωωωωN W N R(公式2-2) 2.2 三角形窗三角形窗(Bartlett Window )函数时域形式可表示为:⎪⎩⎪⎨⎧---≤≤-=-<<-1)1(21,122)1(21012)(N n N N nN n N nn w R B(公式2-3) 窗谱为:()ωωωωωωω⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛--⎪⎪⎪⎪⎭⎫⎝⎛⎪⎭⎫⎝⎛⎪⎭⎫ ⎝⎛≈⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎭⎫ ⎝⎛⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=2122122sin 4sin 22sin 41sin 12N j N j j e N Ne N N e W (公式2-4) 式中,当N 远大于1时,此时,窗谱主瓣宽度为8π/N 。
2.3 汉宁窗(升余弦窗)汉宁窗(hanning )函数时域形式可表示为:())(12cos 121n R N n n W N ⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=π(公式2-5)利用傅利叶变换的调制特性,由上式可得汉宁窗的频谱函数为:()()ωωπωπωω⎪⎭⎫ ⎝⎛--⎭⎬⎫⎩⎨⎧⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-++⎪⎭⎫ ⎝⎛--+=21121225.05.0N j R R R j e N W N W W e W ()ωω⎪⎭⎫ ⎝⎛--=21N j eW (公式2-6)式中, ()()ωωω⎪⎭⎫ ⎝⎛--=21N j R j R e W e W (公式2-7) 当N 远大于1时,上式可近似表示为:()()⎪⎭⎫ ⎝⎛++⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-+≈N W N W W W R R R πωπωωω2225.05.0 (公式2-8) 这三部分之和使旁瓣互相抵消,能量更集中在主瓣,汉宁窗函数的最大旁瓣值比主瓣值低31dB ,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N 。
hanning 函数:生成汉宁窗调用方式:(1) w = hanning(n):输入参数n 是窗函数的长度;输出参数w 是由窗函数的值组成的n 阶向量。
注意:此函数不返回是零点的窗函数的首尾两个元素。
(2) w = hanning(n,'symmetric'):与上面相类似。
(3) w = hanning(n,'periodic'):此函数返回包括为零点的窗函数的首尾两个元素。
3. 各类窗函数比较3.1 窗函数绘图比较MATLAB程序源代码为:n=50;x=1:50;juxing=boxcar(n); %构造矩形窗sanjiao=triang(n); %构造三角窗hanming=hamming(n); %构造汉宁窗bulaikeman=blackman(n); %构造布莱克曼窗kaize=kaiser(n); %构造凯泽窗plot(x,juxing,'b.',x,sanjiao,'gx',x,hanming,'r+',x,bulaikeman,'cd',x,kaize,'k*');legend('矩形窗','三角窗','汉明窗','布莱克曼窗','凯泽窗');3.2 窗函数法设计步骤实际利用窗函数法进行FIR滤波器设计时,依据所给的技术指标一般需要经过以下几个步骤进行设计:1.给定理想的频率响应函数及技术指标;2.求出理想的单位抽样响应;3.根据阻带衰减选择窗函数w(n);4.根据过渡带宽度确定N值;5.求出所设计的FIR滤波器的单位抽样响应;6.计算频率响应,验算指标是否满足要求。
图 1 各类窗函数绘图比较最小阻带衰减仅由窗形状决定,不受N的影响;而过渡带的宽度则随窗宽的增加而减小。
3.3 窗函数法设计比较利用原理说明介绍的fir1函数进行设计,这种设计方法只需要给出滤波器的阶数,截止频率,窗函数等参数,MATLAB即可自行完成设计,并可通过freqz函数查看滤波器的幅频响应和相频响应,已验证滤波器是否满足设计要求,下面给出利用fir1函数设计的不同窗函数的数字带通滤波器。
1.利用矩形窗进行设计MATLAB程序源代码为:fs=20000; %设定采样频率fp1=4500;fp2=6500; %第一截止频率fs1=3000;fs2=7500; %第二截止频率As=40; %最小阻带衰减Ws1=(fp1+fs1)/fs;Ws2=(fp2+fs2)/fs; %截止频率归一化处理w=(fp1-fs1)/fs; %求归一化过渡带M=ceil((As-7.95)/(14.36*w)) %计算所需滤波器的阶数juxing=boxcar(M+1); %生成长度为M+1的矩形窗boxb=fir1(M,[Ws1,Ws2],juxing); %生成矩形窗设计的fir滤波器freqz(boxb,1,fs,fs); %绘制幅频和相频响应曲线运行结果为:图2 用矩形窗设计的FIR滤波器的幅频和相频响应曲线2.利用三角窗进行设计利用三角窗进行设计时,原理与矩形窗基本相同,只不过生成窗函数时采用triang()函数生成三角窗,程序运行结果为:3.利用汉宁窗进行设计利用汉宁窗进行设计时,原理与矩形窗基本相同,只不过生成窗函数时采用hanning ()函数生成三角窗,程序运行结果为:图 3 用三角形窗设计的FIR滤波器幅频和相频响应曲线图 4 用汉宁窗设计的FIR滤波器的幅频和相频响应曲线4. 利用布莱克曼窗进行设计利用布莱克曼窗进行设计时,原理与矩形窗基本相同,只不过生成窗函数时采用blackman()函数生成三角窗,程序运行结果如下:图 5 用布莱克曼窗设计的FIR滤波器幅频和相频响应曲线5. 利用凯泽窗进行设计利用凯泽窗进行设计时,滤波器的参数可以用以下函数求得:调用函数[n,wn,bta,ftype]=kaiserord(f,a,dev,fs)参数:(1)f为对应的归一化频率(2)a为由f指定的各个频带上的幅值向量,一般只有0和1,和f长度关系为(2*a 的长度)—2=(f的长度)(3)devs用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a相等。