FIR滤波器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三: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.2
0.30.40.50.60.70.80.91
-1000
-500
500
Normalized Frequency (⨯π rad/sample)
P h a s e (d e g r e e s )
00.10.2
0.30.40.50.60.70.80.91
-60
-40-20
0Normalized Frequency (⨯π rad/sample)
M a g n i t u d e (d B )
N=15,汉宁窗
0.1
0.2
0.30.40.50.60.70.80.9
1
-1500
-1000-5000
500
Normalized Frequency (⨯π rad/sample)
P h a s e (d e g r e e s )
00.10.2
0.30.40.50.60.70.80.91
-60
-40-20
0Normalized 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)));