实验五 用窗函数法设计FIR 数字滤波器一、实验目的:1. 掌握用窗函数法设计FIR 数字滤波器的原理和方法2. 熟悉线性相位FIR 数字滤波器特性。
3. 了解各种窗函数对滤波特性的影响。
二、实验原理线性相位特点在实际应用中非常重要,如在数据通信、图像处理、语音信号处理等领域,往往要求系统具有线性相位特性,因而常采用容易设计成线性相位的有限冲激响应FIR 数字滤波器来实现。
1. 常用窗函数:1) 矩形窗10[]0k M w k ≤≤⎧=⎨⎩其他 (5.21) 2) Hann (汉纳)窗0.5-0.5cos(2/)0[]0k M k M w k π≤≤⎧=⎨⎩其他 (5.22)3) Hamming (汉明)窗0.54-0.46cos(2/)0[]0k M k M w k π≤≤⎧=⎨⎩其他 (5.23) 4) Blackman (布莱克曼)窗0.42-0.5cos(2/)0.08cos(4/)0[]0k M k M k M w k ππ+≤≤⎧=⎨⎩其他 (5.24) 5) Kaiser (凯泽)窗0[]0w k k M =≤≤ (5.25) 其中2201(/2)()1!n x I x n ∞=⎡⎤=+⎢⎥⎣⎦∑ 下面介绍用窗函数设计FIR 滤波器的步骤:a) 根据技术要求确定待求滤波器的单位取样响应[]d h k 。
b) 根据对过渡带和阻带衰减的要求,选择窗函数的形式,并估计窗函数长度/N A w ≈∆,A 决定于窗口的形式, w ∆表示滤波器的过渡带。
c) 利用选好的窗函数计算滤波器的单位取样响应[][][]d h k h k w k =。
d) 验算技术指标是否满足要求。
设计出来的滤波器的频率响应用10()[]N j j n n H e h k e -Ω-Ω==∑来计算。
2. Matlab 数字信号处理工具箱中常用的FIR 数字滤波器设计函数hanning 汉纳窗函数。
hamming 汉明窗函数。
blackman 布莱克曼窗函数。
kaiser 凯泽窗函数。
kaiserord 凯泽窗函数设计法的阶数估计。
fir1 窗函数法FIR 数字滤波器设计:低通、高通、带通、带阻、多频率滤波。
fir2 频率抽样法FIR 数字滤波器设计:任意频率响应。
三、实验内容1. 分别用矩形窗、hann 窗,hamming 窗设计一个阶数为9的FIR 低通数字滤波器,截止频率3c rad πΩ=。
1) 画出各种方法设计的数字滤波器的单位脉冲响应。
2) 画出它们的幅频响应,并比较各滤波器的通带纹波和阻带纹波,有何结论?3) 若当输入[]12cos()cos()42x k k k ππ=++,计算各滤波器的输出并画出其波形。
程序过程:clc;clear all ;%阶数为M=9,数字截止频率为 pi/3;设计II 型低通线性相位滤波器M=9;Wc=pi/3;k=0:M;hd=Wc*sinc(Wc*(k-0.5*M))/pi;xk=1+2*cos(pi*k/4)+cos(pi*k/2);figure(1);%以下是矩形窗截断wk=ones(1,M+1);hk=hd.*wk;[H,w]=freqz(hk,1);subplot(311);stem(k,hk,'.');title('矩形窗截断的单位脉冲响应');%以下是hann 窗截断wk=hanning(M+1);hk=hd.*wk';[H,w]=freqz(hk,1);subplot(312);stem(k,hk,'.');title('hanniing 窗截断的单位脉冲响应');%以下是hamming 窗截断wk=hamming(M+1);hk=hd.*wk';[H,w]=freqz(hk,1);subplot(313);stem(k,hk,'.');title('hamming窗截断的单位脉冲响应');figure(2);%以下是矩形窗截断wk=ones(1,M+1);hk=hd.*wk;[H,w]=freqz(hk,1); subplot(311);plot(w,20*log10(abs(H)));grid;title('矩形窗截断的幅频响应');%以下是hann窗截断wk=hanning(M+1);hk=hd.*wk';[H,w]=freqz(hk,1); subplot(312);plot(w,20*log10(abs(H)));grid;title('hanniing窗截断的幅频响应');%以下是hamming窗截断wk=hamming(M+1);hk=hd.*wk';[H,w]=freqz(hk,1); subplot(313);plot(w,20*log10(abs(H)));grid;title('hamming窗截断的幅频响应');figure(3);subplot(221);stem(k,xk,'.');title('输入x[k]');%以下是矩形窗截断wk=ones(1,M+1);hk=hd.*wk;subplot(222);stem(k,xk.*hk,'.');title('矩形窗滤波后输出');%以下是hann窗截断wk=hanning(M+1);hk=hd.*wk';subplot(223);stem(k,xk.*hk,'.');title('hanniing窗滤波后输出');%以下是hamming窗截断wk=hamming(M+1);hk=hd.*wk';subplot(224);stem(k,xk.*hk,'.');title('hamming窗滤波后输出');(1) (2)(3)2. 分别用blackman 窗和kaiser 窗法设计一个满足下列指标的线性相位的FIR 低通滤波器0.4,0.5,0.6,45p p s s rad A dB rad A dB ππΩ=≤Ω=≥,画出所设计的滤波器的幅频响应。
简单评述两种窗的设计结果。
实现过程: %分别用blackman 窗和kaiser 窗法设计一个满足下列指标的线性相位的FIR 低通滤波器clc;clear all ;Wp=0.4*pi;Ws=0.6*pi;Ap=0.5;As=45;Wc=(Wp+Ws)/2;%Blackman 窗的近似过渡带宽度为11.4pi/N ;窗函数的长度NN=ceil(11.4*pi/(Ws-Wp));% N=58,滤波器阶次 M=N-1=57 可以设计II 型低通线性相位系统M=N-1;k=0:M;hd=Wc*sinc(Wc*(k-0.5*M))/pi;wk=blackman(N);hk=hd.*wk';[H,w]=freqz(hk,1);subplot(211);plot(w/pi,20*log10(abs(H)));grid;xlabel('Normalized frequency');ylabel('Gain in dB');title('blackman 窗设计的FIR 滤波器');%kaiser 窗设计subplot(212);f=[Wp/pi,Ws/pi];a=[1,0];dev=[1-10^(-0.05*Ap),10^(-0.05*As)];[M1,Wc1,beta,ftype]=kaiserord(f,a,dev);wk1=kaiser(M1+1,beta);hk1=fir1(M1,Wc1,ftype,wk1);[H1,w1]=freqz(hk1,1);plot(w1/pi,20*log10(abs(H1)));grid;xlabel('Normalized frequency');ylabel('Gain in dB');title('kaiser 窗设计的FIR 滤波器');比较:kaiser 窗的过渡带较长,在阻带的衰减波动逐渐减小;利用blackman 窗设计出的低通滤波器阻带衰减最大。
3. 用频率取样法设计一个44M =的Ⅰ型线性相位带通FIR 滤波器。
带通滤波器的通带截止频率分别为120.3,0.5p p rad rad ππΩ=Ω=。
%用频率取样法设计一个 M=44 的Ⅰ型线性相位带通FIR 滤波器。
%带通滤波器的通带截止频率分别为clc;clear all ;Wp1=0.3*pi;Wp2=0.5*pi;M=44;m=0:M/2;Wm=2*pi.*m/(M+1);%设计理想滤波器的幅度函数 Ad[m]mtr1=floor(Wp2*(M+1)/(2*pi))+2;Ad1=double([Wm<=Wp2]);mtr2=ceil(Wp1*(M+1)/(2*pi));Ad2=double([Wp1<=Wm]);Ad=Ad1.*Ad2;Ad(mtr1)=0.38;Ad(mtr2)=0.28;Hd_1=Ad.*exp(-j*Wm*M/2);Hd_2=conj(fliplr(Hd_1(2:M/2)));Hd=[Hd_1,Hd_2];hk=real(ifft(Hd));w=linspace(0,pi,1000);H=freqz(hk,1,w);%归一化频率下的幅频响应plot(w/pi,abs(H));grid;xlabel('Normalized frequency');ylabel('Gain in dB');title('频率取样法设计的FIR 滤波器');4. 已知理想低通滤波器为1()0c c j d H e others Ω-Ω≤Ω≤Ω⎧=⎨⎩,矩形窗函数[][]N N w k R k = 1) 求理想低通滤波器的单位脉冲响应[]d h k ,并画出[]d h k 。
2) 当16N =时,画出矩形窗函数的幅频响应()j W eΩ。
3) [][][]d N h k h k w k =,画出加窗处理以后的低通滤波器[]h k 的幅频响应()j H e Ω。
实现过程:clc;clear all ;OmegaC=0.5*pi;M=15;k=0:M;hd=OmegaC*sinc(OmegaC*(k-0.5*M))/pi;subplot(311);stem(k,hd,'.');grid;title('理想低通滤波器的单位脉冲响应');wk=ones(1,M+1);w=linspace(-pi,pi,1000);Wm=freqz(wk,1,w);subplot(312);plot(w/pi,abs(Wm));grid;title('矩形窗函数的幅频响应 N=16');hk=hd.*wk;w=linspace(-pi,pi,1000);H=freqz(hk,1,w);subplot(313);plot(w/pi,abs(H));grid;title('加窗处理以后的低通滤波器的幅频响应');四、思考题1.FIR滤波器是否需要考虑稳定性问题?为什么?答:不需要;FIR滤波器的单位脉冲响应是有限长的,系统总是稳定的2.窗函数法和频率抽样法的优缺点是什么?答:窗函数法是利用有限长的单位脉冲响应h[k] 逼近无限长的理想滤波器的hd[k] ,从而使设计的FIR滤波器的频率响应逼近理想滤波器的频率响应频率取样法是使设计的M阶FIR滤波器的频率响应在M+1 个取样点上与理想滤波器的频率响应相等,不足的是设计出的FIR滤波器的幅度函数在通带边界存在过冲,在阻带也有较大波动。