实验三:FIR 数字滤波器的设计实验目的1) 掌握用窗函数法,频率采样法及优化设计法设计FIR 滤波器的原理及方法。
2) 熟悉线性相位FIR 滤波器的幅频特性和相频特性。
3) 了解各种不同窗函数对滤波器性能的影响。
一、 实验内容1. N=45,计算并画出矩形窗、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点。
clear all; N=45;wn1=kaiser(N,0); wn2=hamming(N); wn3=blackman(N); [h1,w1] = freqz(wn1,N); [h2,w2] = freqz(wn2,N); [h3,w3] = freqz(wn3,N);plot(w1/pi,20*log10(abs(h1)),'r-',w2/pi,20*log10(abs(h2)),'b-',w3/pi,20*log10(abs(h3)),'g-'); axis([0,1,-120,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB'); title('三种窗口函数');legend('矩形窗','汉明窗','布莱克曼窗',3);归一化频率/幅度/d B分析:阻带衰减和过渡带带宽是相互矛盾的,矩形窗过渡带带宽窄,但是阻带衰减比较少;布莱克曼窗过渡带带宽宽,但是阻带衰减比较大2. N=15,带通滤波器的两个通带边界分别是ω1=0.3π,ω2=0.5π。
用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB 和20dB 带宽。
N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N 变化的影响。
N=15;h= fir1(N-1,[0.3 0.5],'bandpass',hanning(N)); figure(1)freqz(h,1);axis([0,1,-60,10]); title('N=15,汉宁窗'); N=45;h= fir1(N-1,[0.3 0.5],'bandpass',hanning(N)); figure(2)freqz(h,1);axis([0,1,-60,10]); title('N=45,汉宁窗');00.10.20.30.40.50.60.70.80.91-1000-500500Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )00.10.20.30.40.50.60.70.80.91-60-40-200Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )N=15,汉宁窗0.10.20.30.40.50.60.70.80.91-1500-1000-5000500Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )00.10.20.30.40.50.60.70.80.91-60-40-200Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )N=45,汉宁窗结论:增加窗口函数的长度能够在幅度频谱和相位频谱上获得较好的特性。
但代价是增加了计算量和系统的阶数。
3. 分别改用矩形窗和布莱克曼窗,设计(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点。
clear all; %矩形窗N=15;h= fir1(N-1,[0.3 0.5],'bandpass',kaiser(N,0)); [h1,w1]=freqz(h,1);subplot(2,1,1); plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]); grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('N=15,矩形窗'); N=45;h= fir1(N-1,[0.3 0.5],'bandpass',kaiser(N,0)); [h1,w1]=freqz(h,1);subplot(2,1,2); plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]); grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('N=45,矩形窗'); clear all; %布莱克曼窗N=15;h= fir1(N-1,[0.3 0.5],'bandpass',blackman(N)); [h1,w1]=freqz(h,1);subplot(2,1,1);plot(w1/pi,20*log10(abs(h1))); axis([0,1,-60,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('N=15,布莱克曼窗'); N=45;h= fir1(N-1,[0.3 0.5],'bandpass',blackman(N)); [h1,w1]=freqz(h,1);subplot(2,1,2);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('N=45,布莱克曼窗');00.10.20.30.40.50.60.70.80.91-60-40-20归一化频率/π幅度/d BN=45,矩形窗00.10.20.30.40.50.60.70.80.91-60-40-20归一化频率/π幅度/d BN=15,矩形窗00.10.20.30.40.50.60.70.80.91-60-40-20归一化频率/π幅度/d BN=45,布莱克曼窗00.10.20.30.40.50.60.70.80.91-60-40-20归一化频率/π幅度/d BN=15,布莱克曼窗总结:同实验内容1的结论,除此之外,利用各窗口函数构造的带通滤波器的特性也有些差别。
汉宁窗在这方面具有较好的特性。
4.用Kaiser 窗设计一专用线性相位滤波器,N=40,当β=4、6、10 时,分别设计、比较它们的幅频和相频特性,注意β取不同值时的影响。
clear all;N=40;f = [0 0.2 0.2 0.4 0.4 0.6 0.6 0.8 0.8 1];a = [0 0 1 1 0 0 1 1 0 0];beta=4;h = fir2(N-1,f,a,kaiser(N,beta));[h1,w1]=freqz(h,1);figure;plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('beta=4 时凯塞窗专用线性相位滤波器');beta=6;h = fir2(N-1,f,a,kaiser(N,beta));[h1,w1]=freqz(h,1);figure;plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('beta=6 时凯塞窗专用线性相位滤波器');beta=10;h = fir2(N-1,f,a,kaiser(N,beta));[h1,w1]=freqz(h,1);figure;plot(w1/pi,20*log10(abs(h1)));axis([0,1,-60,10]);grid;xlabel('归一化频率/\pi'); ylabel('幅度/dB');title('beta=10 时凯塞窗专用线性相位滤波器');00.10.20.30.40.50.60.70.80.91-60-50-40-30-20-1010归一化频率/π幅度/d B00.10.20.30.40.50.60.70.80.91-60-50-40-30-20-1010归一化频率/π幅度/d Bbeta=6 时凯塞窗专用线性相位滤波器00.10.20.30.40.50.60.70.80.91-60-50-40-30-20-1010归一化频率/幅度/d B总结:Kaiser 窗的beta 值越大,过渡带的带宽越宽,阻带的衰减越是厉害;beta 值越小,过渡带的带宽越窄,阻带的衰减越是却有所降低。
所以在实际应用的时候,要权衡过渡带带宽和阻带衰减,以获得最优性能!5. 用频率采样法设计(4)中的滤波器,过渡带分别设一个过渡点,令H(k)=0.5。
比较两种不同方法的结果。
clear all; N=40;Hk=[zeros(1,3) 0.5 ones(1,5) 0.5 zeros(1,1) 0.5 ones(1,5) 0.5 zeros(1,5) -0.5 -ones(1,5) -0.5 zeros(1,1) -ones(1,5) -0.5 zeros(1,3)]; k=0:N-1;hn=real(ifft(Hk.*exp(-j*pi*(N-1)*k/N))); [H w]=freqz(hn, 1);plot(w/pi, 20*log10(abs(H))); axis([0 1 -80 10]);grid; xlabel('归一化频率/\pi') ylabel('幅度/dB')title('频率采样法设计专用线性相位滤波器');00.10.20.30.40.50.60.70.80.91-80-70-60-50-40-30-20-10010归一化频率/幅度/d B频率采样法设计专用线性相位滤波器总结:利用频率采样,获得的滤波器通带内波动较好,但衰减有所降低,过渡带也比较宽!6. 用雷米兹(Remez)交替算法设计(4)中的滤波器,并比较(4)、(5)、(6)三种不同方法的结果。