实验六 FIR 数字滤波器的设计一、实验目的1.熟悉FIR 滤波器的设计基本方法2.掌握用窗函数设计FIR 数字滤波器的原理与方法。
二、实验内容1.FIR 数字滤波器的设计方法FIR 滤波器的设计问题在于寻求一系统函数)(z H ,使其频率响应)(ωj eH 逼近滤波器要求的理想频率响应)(ωj d e H ,其对应的单位脉冲响应为)(n h d 。
(1)用窗函数设计FIR 滤波器的基本原理设计思想:从时域从发,设计)(n h 逼近理想)(n h d 。
设理想滤波器)(ωj d eH 的单位脉冲响应为)(n h d 。
以低通线性相位FIR 数字滤波器为例。
⎰∑--∞-∞===ππωωωωωπd e e H n h e n he H jn j d d jn n d j d )(21)()()( (6-1) )(n h d 一般是无限长的,且是非因果的,不能直接作为FIR 滤波器的单位脉冲响应。
要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断)()()(n w n h n h d =,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR 滤波器的单位脉冲响应。
按照线性相位滤波器的要求,h(n)必须是偶对称的。
对称中心必须等于滤波器的延时常数,即⎩⎨⎧-==2/)1()()()(N a n w n h n h d (6-2) 用矩形窗设计的FIR 低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs )效应。
为了消除吉布斯效应,一般采用其他类型的窗函数。
(2) 典型的窗函数① 矩形窗(Rectangle Window))()(n R n w N = (6-3)② 三角形窗(Bartlett Window)⎪⎩⎪⎨⎧-≤<----≤≤-=121,122210,12)(N n N N n N n N n n w (6-4) ③ 汉宁(Hanning)窗,又称升余弦窗)()]12cos(1[21)(n R N n n w N --=π (6-5) ④ 汉明(Hamming)窗,又称改进的升余弦窗)()]12cos(46.054.0[)(n R N n n w N --=π (6-6) ⑤ 布莱克曼(Blankman)窗,又称二阶升余弦窗)()]14cos(08.0)12cos(5.042.0[)(n R N n N n n w N -+--=ππ (6-7) ⑥ 凯泽(Kaiser)窗 10,)())]1/(21[1()(020-≤≤---=N n I N n I n w ββ (6-8) 其中:β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。
I 0(·)是第一类修正零阶贝塞尔函数。
若阻带最小衰减表示为s s A δ10log 20-=,β的确定可采用下述经验公式:⎪⎩⎪⎨⎧>-≤<-+-≤=50)7.8(1102.05021)21(07886.0)21(5842.02104.0s s s s s s A A A A A A β (6-9) 若滤波器通带和阻带波纹相等即δp=δs 时,滤波器节数可通过下式确定:136.1495.7+∆-=F A N s (6-10) 式中:πωωπω22p s F -=∆=∆ (3)利用窗函数设计FIR 滤波器的具体步骤如下:1、确定数字滤波器的性能要求,临界频率}{k w ,滤波器单位脉冲响应长度N 。
2、根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应)(jw d e H 的幅频特性和相频特性。
3、求理想单位脉冲响应)(n h d ,在实际计算中,可对)(jw d e H 采样,并对其求IDFT 的)(n h M ,用)(n h M 代替)(n h d 。
4、选择适当的窗函数w (n ),根据)()()(n W n h n h N d ⋅=求所需设计的FIR 滤波器单位脉冲响应。
5、求)(jw d e H ,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N ,重复上述设计过程,以得到满意的结果。
2.FIR 数字滤波器的Matlab 实现MATLAB 提供的相关函数,函数调用格式:b=fir1(n,wn,’ftype’,window)其中,n ——FIR 滤波器的阶数,对于高通、带阻滤波器n 取偶数。
wn ——为滤波器截止频率(归一化频率);‘ftype ’——为滤波器类型;如’high ’为高通,’stop ’为带阻等;window ——窗函数(列向量、其长度为n+1),缺省时,自动取Hamming 窗。
MATLAB 提供了几个窗函数:wd=boxcar(N)――返回N 点矩形窗函数wd=triang(N)――返回N 点三角窗函数wd=hanning(N)――返回N 点汉宁窗函数wd=hamming(N)――返回N 点汉明窗函数wd=Blackman(N)――返回N 点布莱克曼函数wd=kaiser(N,beta)――返回给定beta 值时N 点凯泽窗函数【实例6-1】根据以下技术指示,设计一个数字FIR 低通滤波器。
wp=0.2π,ws=0.3π,Rp=0.25dB,Rs=50dB因为衰减为50dB ,可选择的窗口有汉明窗和布莱克曼窗。
而汉明窗有较小的过度带,因此具有较小的阶数,因此选用汉明窗。
解:源程序如下:>> wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp;>> N0=ceil(6.6*pi/deltaw);% 查表根据汉明窗设计计算所需的滤波器h(n)的长度, %ceil(x)取大于等于x的最小整数>> N=N0+mod(N0+1,2);%为实现第一类偶对称滤波器,应确保长度N为奇数>> wdhm=hamming(N);%求窗函数>> wc=(ws+wp)/2;%求截止频率>> tao=(N-1)/2;n=0:N-1;m=n-tao+eps;%求理想脉冲响应>> hd=sin(wc*m)./(pi*m);%>> hn=hd.*wdhm';%设计的脉冲响应>> 或 wc=(wp+ws)/2/pi; 取关于pi归一化的频率>>hn=fir1(N-1,wc,hamming(N))>>subplot(2,2,1),stem(n,hd);xlabel('n');ylabel('hd(n)');title('ÀíÏëÂö³åÏìÓ¦')>>subplot(2,2,2),stem(n,wdhm);xlabel('n');ylabel('wdhm');title('ººÃ÷´°')>>subplot(2,2,3),stem(n,Hhm);xlabel('n');ylabel('h(n)');title('Éè¼ÆÂ˲¨Æ÷µÄÂö³åÏìÓ¦')>> b=hd.*wdhm';>> [H,w]=freqz(b,1);>> subplot(2,2,4),plot(w,20*log10(abs(H)));grid;title('·ù¶ÈÏìÓ¦')【实例6-2】根据给定的滤波器指标,设计一款FIR滤波器:针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器。
参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10Hz,通带上限截止频率fc2=20Hz,过渡带宽6Hz,通阻带波动0.01,采用凯塞窗设计。
解:源程序如下:fc1=10; fc2=20; fs=100;[n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);w1=2*fc1/fs; w2=2*fc2/fs;window=kaiser(n+1,beta); %使用kaiser窗函数b=fir1(n,[w1 w2],window); %使用标准频率响应的%加窗设计函数fir1freqz(b,1,512); %数字滤波器频率响应t = (0:100)/fs;s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);sf = filter(b,1,s); %对信号s进行滤波smp=512;f=100*(0:256)/smp;S=fft(s,smp);SF=fft(sf,smp);%f=1000*(0:256)/512; %设置频率轴(横轴)坐标,1000为采样频率;figuresubplot(2,2,1); plot(t,s) %画出时域内的信号subplot(2,2,2); plot(t,sf) %画出时域内的信号subplot(2,2,3); plot(f,abs(S)(1:257)); %画出频域内的信号subplot(2,2,4); plot(f,abs(SF)(1:257)); %画出频域内的信号三、思考题1、用窗函数法设计线性相位FIR低通滤波器,通带截止频率Wp=0.5π,Ws=0.6π,阻带衰减不小于40dB,通带衰减不大于3dB.四、实验报告要求1. 简述实验原理及目的。
2.给出实验结果,并对结果作出分析。
3. 记录调试运行情况及所遇问题的解决方法。
4.简要回答思考题。
(注:文档可能无法思考全面,请浏览后下载,供参考。
可复制、编制,期待你的好评与关注)。