有限单位冲激响应序列 h ( n ) h(n) h(n)逼近 h d ( n ) h_d(n) hd(n);由于 h d ( n ) h_d(n) hd(n)往往是无限长的序列,且是非因果的,所以用窗函数;
然而截断无限长序列 h d ( n ) h_d(n) hd(n)来得到有限长序列 h ( d ) h(d) h(d),可能破坏了序列 h d ( n ) h_d(n) hd(n)的均匀收敛性,在频谱中波纹幅度响应很大;那么为了减小波纹幅度,可以加大窗的长度N;或使用不同类型的窗函数
ω ( n ) = { 1 ( 0 ≤ n ≤ N − 1 ) 0 ( o t h e r ) W R ( ω ) = s i n ( N ω / 2 ) s i n ( ω / 2 ) \omega(n)= \begin{cases} 1&(0\leq n\leq N-1)\\ 0&(other) \end{cases}\\ W_R(\omega)=\frac{sin(N\omega/2)}{sin(\omega/2)} ω(n)={10(0≤n≤N−1)(other)WR(ω)=sin(ω/2)sin(Nω/2)
也叫三角形窗
ω ( n ) = { 2 n N − 1 ( 0 ≤ n ≤ N − 1 2 ) 2 − 2 n N − 1 ( N − 1 2 ≤ n ≤ N − 1 ) W ( ω ) = 1 M ∣ s i n ( N ω / 2 ) s i n ( ω / 2 ) ) ∣ 2 ( M = N − 1 2 ) \omega(n)= \begin{cases} \frac{2n}{N-1}&(0\leq n\leq \frac{N-1}{2})\\ 2-\frac{2n}{N-1}&(\frac{N-1}{2}\leq n\leq N-1) \end{cases}\\ W(\omega)=\frac{1}{M}|\frac{sin(N\omega/2)}{sin(\omega/2)})|^2~~~(M=\frac{N-1}{2}) ω(n)={N−12n2−N−12n(0≤n≤2N−1)(2N−1≤n≤N−1)W(ω)=M1∣sin(ω/2)sin(Nω/2))∣2 (M=2N−1)
也叫升余弦窗
ω ( n ) = 1 2 [ 1 − c o s ( 2 n π N − 1 ) ] ( 0 ≤ n ≤ N − 1 ) o r ω ( n ) = 1 2 [ 1 − c o s ( 2 n π N − 1 ) ] ω R ( n ) W ( e j w ) = W ( w ) e − j w α \omega(n)=\frac{1}{2}[1-cos(\frac{2n\pi}{N-1})]~~~~~~(0\leq n\leq N-1)\\ or\\ \omega(n)=\frac{1}{2}[1-cos(\frac{2n\pi}{N-1})]\omega_R(n)\\ W(e^{jw})=W(w)e^{-jw\alpha} ω(n)=21[1−cos(N−12nπ)] (0≤n≤N−1)orω(n)=21[1−cos(N−12nπ)]ωR(n)W(ejw)=W(w)e−jwα
汉宁窗的频谱幅度:
W ( ω ) = 0.5 W R ( ω ) + 0.25 W R ( ω − 2 π N − 1 ) + 0.25 W R ( ω + 2 π N − 1 ) W(\omega)=0.5W_R(\omega)+0.25W_R(\omega-\frac{2\pi}{N-1})+0.25W_R(\omega+\frac{2\pi}{N-1}) W(ω)=0.5WR(ω)+0.25WR(ω−N−12π)+0.25WR(ω+N−12π)
式中 W R ( ω ) W_R(\omega) WR(ω)是矩形窗的频谱幅度函数。这3部分频谱相加使旁瓣抵消,让能量集中在主瓣;代价是使主瓣的宽度翻倍。
也叫改进余弦窗
ω ( n ) = [ 0.54 − 0.46 c o s ( 2 n π N − 1 ) ] ω R ( n ) W ( ω ) = 0.54 W R ( ω ) + 0.23 W R ( ω − 2 π N − 1 ) + 0.23 W R ( ω + 2 π N − 1 ) \omega(n)=[0.54-0.46cos(\frac{2n\pi}{N-1})]\omega_R(n)\\ W(\omega)=0.54W_R(\omega)+0.23W_R(\omega-\frac{2\pi}{N-1})+0.23W_R(\omega+\frac{2\pi}{N-1}) ω(n)=[0.54−0.46cos(N−12nπ)]ωR(n)W(ω)=0.54WR(ω)+0.23WR(ω−N−12π)+0.23WR(ω+N−12π)
ω ( n ) = [ 0.42 − 0.5 c o s ( 4 n π N − 1 ) + 0.08 c o s ( 4 n π N − 1 ) ] ω R ( n ) W ( ω ) = 0.42 W R ( ω ) + 0.25 [ W R ( ω − 2 π N − 1 ) + W R ( ω + 2 π N − 1 ) ] + 0.04 [ W R ( ω − 4 π N − 1 ) + W R ( ω + 4 π N − 1 ) ] \omega(n)=[0.42-0.5cos(\frac{4n\pi}{N-1})+0.08cos(\frac{4n\pi}{N-1})]\omega_R(n)\\ W(\omega)=0.42W_R(\omega)+0.25[W_R(\omega-\frac{2\pi}{N-1})+W_R(\omega+\frac{2\pi}{N-1})]\\ +0.04[W_R(\omega-\frac{4\pi}{N-1})+W_R(\omega+\frac{4\pi}{N-1})] ω(n)=[0.42−0.5cos(N−14nπ)+0.08cos(N−14nπ)]ωR(n)W(ω)=0.42WR(ω)+0.25[WR(ω−N−12π)+WR(ω+N−12π)]+0.04[WR(ω−N−14π)+WR(ω+N−14π)]
ω ( n ) = I 0 [ β 1 − ( 2 n N − 1 − 1 ) 2 ] I 0 ( β ) \omega(n)=\frac{I_0[\beta\sqrt{1-(\frac{2n}{N-1}-1})^2]}{I_0(\beta)} ω(n)=I0(β)I0[β1−(N−12n−1)2]
其中 I 0 ( x ) I_0(x) I0(x)是第一类修正零阶贝塞尔函数
FIR滤波器的指标:通带截止频率 ω p \omega_p ωp;阻带截止频率 ω s \omega_s ωs;通带衰减 R p ( d b ) R_p(db) Rp(db);阻带衰减 A s ( d b ) A_s(db) As(db)。
根据允许的过渡带宽及阻带衰减,初步选择窗函数与N值。
如果是想用理想低通逼近,需求出理想低通的冲激响应 h d ( n ) h_d(n) hd(n)。
其理想低通的截止频率应选为:
ω c = ω p + ω s 2 h d ( n ) = 1 2 π ∫ − ω c ω c e − j w α e j w n d w = s i n [ ( n − α ) ω c ] ( n − α ) π \omega_c=\frac{\omega_p+\omega_s}{2}\\ h_d(n)=\frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}e^{-jw\alpha}e^{jwn}dw\\ =\frac{sin[(n-\alpha)\omega_c]}{(n-\alpha)\pi} ωc=2ωp+ωshd(n)=2π1∫−ωcωce−jwαejwndw=(n−α)πsin[(n−α)ωc]
将 h d ( n ) h_d(n) hd(n)与窗函数相乘得FIR滤波器的冲激响应 h ( n ) h(n) h(n):
h ( n ) = h d ( n ) ω ( n ) h(n)=h_d(n)\omega(n) h(n)=hd(n)ω(n)
计算FIR数字滤波器的频率响应,是否达到指标:
H ( e j w ) = ∑ n = 0 N − 1 h ( n ) e − j w n H(e^{jw})=\sum_{n=0}^{N-1}h(n)e^{-jwn} H(ejw)=n=0∑N−1h(n)e−jwn
由上式结果计算幅度响应 H ( w ) H(w) H(w)和相位响应 φ ( w ) \varphi(w) φ(w):
H ( w ) = ∣ H ( e j w ) ∣ φ ( w ) = a r g [ H ( e j w ) ] H(w)=|H(e^{jw})|\\ \varphi(w)=arg[H(e^{jw})] H(w)=∣H(ejw)∣φ(w)=arg[H(ejw)]
技术指标:
clear;clc;
%指标
wp = 0.2*pi; ws = 0.3*pi;
N = 51;
n = [0:1:N-1];
%理想低通截止频率
wc = (wp+ws)/2;
%理想低通的冲激响应
hd = idea_lowfilter(wc,N);
%FIR滤波器的冲激响应
%矩形窗:h1;汉宁窗:h2;哈明窗:h3;凯泽窗:h4
w_box = boxcar(N)';
w_han = hann(N)';
w_ham = hamming(N)';
w_kaiser = kaiser(N)';
h1 = hd.*w_box;
h2 = hd.*w_han;
h3 = hd.*w_ham;
h4 = hd.*w_kaiser;
%计算频率响应
[H1,w1]=freqz(h1,1);
[H2,w2]=freqz(h2,1);
[H3,w3]=freqz(h3,1);
[H4,w4]=freqz(h4,1);
%plot
figure
stem(n,hd);title('理想冲激响应');
filplot(n,w1,h1,w_box,H1,'矩形窗');
filplot(n,w2,h2,w_han,H2,'汉宁窗');
filplot(n,w3,h3,w_ham,H3,'哈明窗');
filplot(n,w4,h4,w_kaiser,H4,'凯泽窗');
%plot
function filplot(n,w,response,win,frequency,type)
figure
subplot(2,2,1);stem(n,response);title('实际冲激响应');
subplot(2,2,2);stem(n,win);title(type);
subplot(2,2,3);plot(w/pi,20*log10(abs(frequency)));title('幅度响应');
subplot(2,2,4);plot(w/pi,angle(frequency));title('相位响应');
end
结果在这里:
窗函数设计FIR滤波器是从时域进行设计的。理想低通滤波器加窗处理后,主要受两方面影响。
所以可以采用不同类型的窗函数来改善不均匀收敛性
器的频率响应在不连续点出现过渡带,过渡带的宽度取决于窗函数主瓣的宽度,一般过渡带宽度与N成反比
2. 滤波器在通带和主带产生波纹,主要是窗函数的频谱的旁瓣造成;旁瓣的高度要尽可能小,让能量集中在主瓣,减小通带和阻带之间的波纹;主瓣宽度尽可能窄,以获得尽可能陡的过渡带,即N要大。但是这两点又是互相矛盾的:降低旁瓣高度那么主瓣会变宽,让主瓣变窄那么旁瓣会变高。
所以可以采用不同类型的窗函数来改善不均匀收敛性