窗函数设计FIR滤波器

在这里插入图片描述

实验原理😊

有限单位冲激响应序列 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;或使用不同类型的窗函数

常见的窗函数🐱‍🏍

矩形窗Boxcar😉

ω ( 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(0nN1)(other)WR(ω)=sin(ω/2)sin(Nω/2)


巴特利特窗Bartlett😁

也叫三角形窗
ω ( 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)={N12n2N12n(0n2N1)(2N1nN1)W(ω)=M1sin(ω/2)sin(Nω/2))2   (M=2N1)


汉宁窗Hanning😯

也叫升余弦窗
ω ( 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[1cos(N12nπ)]      (0nN1)orω(n)=21[1cos(N12nπ)]ωR(n)W(ejw)=W(w)ejwα
汉宁窗的频谱幅度:
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(ωN12π)+0.25WR(ω+N12π)
式中 W R ( ω ) W_R(\omega) WR(ω)是矩形窗的频谱幅度函数。这3部分频谱相加使旁瓣抵消,让能量集中在主瓣;代价是使主瓣的宽度翻倍。


哈明窗Hamming😛

也叫改进余弦窗
ω ( 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.540.46cos(N12nπ)]ωR(n)W(ω)=0.54WR(ω)+0.23WR(ωN12π)+0.23WR(ω+N12π)


布莱克曼窗Blackman😚

ω ( 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.420.5cos(N14nπ)+0.08cos(N14nπ)]ωR(n)W(ω)=0.42WR(ω)+0.25[WR(ωN12π)+WR(ω+N12π)]+0.04[WR(ωN14π)+WR(ω+N14π)]


凯泽窗Kaiser🤗

ω ( 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(N12n1 )2]

其中 I 0 ( x ) I_0(x) I0(x)是第一类修正零阶贝塞尔函数

设计步骤👾

  1. 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)

  2. 根据允许的过渡带宽阻带衰减,初步选择窗函数与N值。

  3. 如果是想用理想低通逼近,需求出理想低通的冲激响应 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ωcejwαejwndw=(nα)πsin[(nα)ωc]

  4. 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)

  5. 计算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=0N1h(n)ejwn
    由上式结果计算幅度响应 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)]

MATLAB实现🤠

技术指标:

  • 通带截止频率: ω p = 0.2 π \omega_p=0.2\pi ωp=0.2π;阻带截止频率: ω p = 0.3 π \omega_p=0.3\pi ωp=0.3π
  • 通带衰减: R p = 0.35 d b R_p=0.35db Rp=0.35db;阻带衰减: R p = 30 d b R_p=30db Rp=30db
%理想低通滤波器的计算
function hd = idea_lowfilter(wc,num)
    a = (num-1)/2;
    n = [0:1:(num-1)];
    delta = n-a+eps;
    hd = sin(wc*delta)./(pi*delta);
end
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
    

结果在这里😏:

在这里插入图片描述

  • boxcar

在这里插入图片描述

  • hanning

在这里插入图片描述

  • hamming
    在这里插入图片描述

  • kaizer

在这里插入图片描述

  • 窗函数N取值对幅度响应的影响
  1. N=61

在这里插入图片描述

  1. N=81

在这里插入图片描述

  • 窗函数法设计FIR滤波器的主要特点

窗函数设计FIR滤波器是从时域进行设计的。理想低通滤波器加窗处理后,主要受两方面影响。

  1. 🤔滤波器的频率响应在不连续点出现过渡带,过渡带的宽度取决于窗函数主瓣的宽度,一般过渡带宽度与N成反比
  2. 🤔滤波器在通带和主带产生波纹,主要是窗函数的频谱的旁瓣造成;旁瓣的高度要尽可能小,让能量集中在主瓣,减小通带和阻带之间的波纹;主瓣宽度尽可能窄,以获得尽可能陡的过渡带,即N要大。但是这两点又是互相矛盾的:降低旁瓣高度那么主瓣会变宽,让主瓣变窄那么旁瓣会变高。

所以可以采用不同类型的窗函数来改善不均匀收敛性

🥰🥰🥰看到这里了不如整个关注,留点精彩评论吧🥰🥰🥰
在这里插入图片描述

  • 39
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值