一、实验目的
1、 了解一个实际滤波器设计过程;
2、 掌握用窗口法设计FIR 滤波器的原理;
3、 理解窗函数对滤波器性能的影响。
二、基本原理
设所希望得到的滤波器的理想频率响应为)(jw d e H 。那么FIR 滤波器的设计就在于寻
找一个传递函数∑∞
=-=0)()(n jwn jw e
n h e H 去逼近)(jw d e H 。在这种逼近中最直接的一种方法
是从单位取样响应序列)(n h 着手,使)(n h 逼近理想的单位取样响应)(n h d 。我们知道)(n h d 可以从理想频率响应)(jw d e
H 通过傅里叶反变换来得到,即:
⎰∑==
∞∞=-ππ20)(21
)()()(dw e e H n h e n h e H jwn jw d d n jwn d jw d (3.1) 但是一般来说,这样得到的单位取样响应)(n h d 往往都是无限长序列;而且是非因果的。我们
以一个截止频率为c w 的线性相应位理想低通为例来说明。设低通滤波器的时延为∂,即:
⎪⎩⎪⎨⎧≤<≤=∂-πw w w w e e H c c jw jw d 0)( (3.2) 则
dw e n h c
c e w w jwn jw
d ⎰-∂=π21)( )()]
(sin[∂-∂-=n n w c π
这是一个以∂为中心的偶对称的无限长非因果序列。这样一个无限长的序列怎样用一个有限长序列去近似呢?最简单的办法就是直接截取它的一段来代替它。例如把0=n 到1-=N n 的一段截取来作为)(n h ,但是为要保证所得到的是线性相位滤波器。必须满足)(n h 的对称性,所以时延∂应该取)(n h 长度的一半,即2/)1(-=∂N
⎩⎨⎧-≤≤=n N n n h n h d 其它010)()(
这种直接截取的办法可以形象地想象为:)(n h 好比是通过一个“窗口”所看到的一段)(n h d 。)(n h 中表达为)(n h d 和一个“窗口函数”的乘积。在这里,窗口函数就是矩形脉冲
函数)(n R N ,即
)()()(n R n h n h N d ⋅=
但是一般来说,窗口函数并不一定是矩形函数,可以在矩形以内还对)(n h d 作一定的加权处
理,因此,一般可以表示为
)()()(n w n h n h d ⋅=
这里)(n w 就是窗口函数。这种对理想单位取样响应加窗的处理对频率响应会产生以下三点影响:
(1)使理想特性不连续的边沿加宽,形成一过渡带,过渡带的宽度取决于窗口频谱的主瓣宽度。
(2)在过渡带两旁产生肩峰和余振,它们取决于窗口频谱的旁瓣;旁瓣越多,余振也越多;旁瓣相对值越大,肩峰则越强。
(3)增加截取长度N ,只能缩小窗口频谱的主瓣宽度而不能改变旁瓣的相对值;旁瓣与主瓣的相对关系只决定于窗口函数灵敏的形状。因此增加N ,只能相对应减小过渡带宽。而不能改变肩峰值。肩峰值的大小直接决定通带内的平稳和阻带的衰减,对滤波器性能有很大关系。例如矩形窗的情况下,肩峰达8.95%,致使阻带最小衰减只有21分贝,这在工程上往往是不够的。怎样才能改善阻带的衰减特性呢?只能从改善窗口函数的形状上找出路,所以希望的窗口频谱中应该减少旁瓣,使能量集中在主瓣,这样可以减少肩峰和余振,提高阻带的衰减。而且要求主瓣宽度尽量窄,以获得较陡的过渡带,然而这两个要求总不能兼得,往往需要用增加主瓣宽度带换取决瓣的抑制,于是提出了海明窗、凯宽窗、切比雪夫窗等窗口函数。
窗函数设计FIR 数字滤波器的一般步骤如下:
(1)确定逼近理想滤波器的频率响应函数)(jw d e
H ;
(2)求出理想的单位抽样响应)(n h d ;
(3)根据过渡带宽和阻带最小衰件等要求,利用表7-2、7-3(教材352~353),选择窗函数,并确定窗口长度;
(4)求所设计的FIR 滤波器的单位抽样响应)()()(n w n h n h d =;
(5)计算频率响应)]([)(n h DTFT e H jw =,验算指标是否满足要求,若不满足,则要重新设计。
三、实验设备
计算机
四、实验内容及要求
1、用窗函数法设计第一类线性相位FIR 高通数字滤波器:
rad w p π8.0=,rad w s π7.0=,db A p 3.0≤,db A s 40≥
给出详细的高通数字滤波器设计过程,绘制出幅度衰减特性曲线。
2、用窗函数(至少选用三种窗)法设计一个FIR 线性相位低通数字滤波器,已知π25.0=c w ,N=21。编写调试程序,要求绘制相应的幅频特性曲线,观察3dB 和20dB 带宽
以及阻带最小衰减。
五、实验报告要求
1、简述实验目的和原理;
2、完成实验内容:要求有程序,有图形(坐标要标识清楚);
3、窗口的长度对滤波器的性能有什么影响?
FIR 数字滤波器的设计
设计思想:
FIR 滤波器的设计就在于寻找一个传递函数H (e jw )=Ʃh(n)e -jwn 去逼近H d (e jw
)。在这种逼近中最直接的一种方法是从单位取样响应序列h (n )着手,使h d (n )。h d (n )可以从理想频率响应H d (e jw )通过傅里叶反变换来得到。得到的h d (n )往往都是无限长序列,非因果的,最简单的方法就是直接截取一段来代替它,但要保证所得到的是线性相位滤波器,所以必须要满足h (n )的对称性,取时延а为h (n )长度的一半,即а=(N-1)/2。 h (n )的表达式为 h (n )=h d (n ).w(n ),其中w (n )为窗函数。
实验程序:
(一)用窗函数设计法设计第一类线性相位FIR 高通数字滤波器:
wp=0.8*pi;ws=0.7*pi;
Bt=wp-ws;
N0=ceil(6.2*pi/Bt);
N=N0+mod(N0+1,2);
wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,'high',hanning(N));
hn
[H,w]=freqz(hn);
plot(w/pi,20*log10(abs(H)));
(二)用窗函数法设计一个FIR线性相位低通滤波器。
N=21;wc=0.25*pi;
hn=fir1(N-1,wc,hanning(N));
hn
bo=fir1(N-1,wc,boxcar(N));
bo
bl=fir1(N-1,wc,blackman(N));
bl
subplot(3,1,1);
[H1,w]=freqz(hn);
plot(w/pi,20*log10(abs(H1)));
axis([0,1,-100,20]);grid on
xlabel('w/\\pi');ylabel('20*log10|H1(w)|');title('幅频特性') subplot(3,1,2);
[H2,w]=freqz(bo);
plot(w/pi,20*log10(abs(H2)));
axis([0,1,-100,20]);grid on
xlabel('w/\\pi');ylabel('20*log10|H2(w)|');title('幅频特性') subplot(3,1,3);
[H3,w]=freqz(bl);
plot(w/pi,20*log10(abs(H3)));xlabel('w/\\pi');ylabel('20*log10|H3(w)|');title('幅频特性')下载本文