实验原理😊
有限单位脉冲响应序列近似于;由于通常是一个无限长的序列并且是非因果的,因此使用了窗口函数;
然而截断无限长序列来得到有限长序列,可能破坏了序列的均匀收敛性,在频谱中波纹幅度响应很大;那么为了减小波纹幅度,可以加大窗的长度N;或使用不同类型的窗函数
常见的窗函数🐱🏍
矩形窗Boxcar😉
巴特利特窗Bartlett😁
也称为三角窗
汉宁窗Hanning😯
也称为升余弦窗
汉宁窗的光谱幅度:
式中是矩形窗的频谱幅度函数。这3部分频谱相加使旁瓣抵消,让能量集中在主瓣;代价是使主瓣的宽度翻倍。
哈明窗Hamming😛
也称为改进余弦窗
布莱克曼窗Blackman😚
凯泽窗Kaiser🤗
其中是第一类修正的零阶贝塞尔函数
设计步骤👾
- FIR滤波器的指标:通带截止频率;阻带截止频率;通带衰减;阻带衰减。
- 根据允许的过渡带宽及阻带衰减,初步选择窗函数与N值。
- 如果要使用理想的低通近似,则需要理想的低通脉冲响应。其理想的低通截止频率应选择为:
- 将与窗函数相乘得FIR滤波器的冲激响应:
- 计算FIR数字滤波器的频率响应,是否达到指标:
由上式计算幅值响应 和相位响应 :
MATLAB实现🤠
技术指标:
- 通带截止频率:;阻带截止频率:
- 通带衰减:;阻带衰减:
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取值对幅度响应的影响
- N=61
- N=81
- 窗函数法设计FIR滤波器的主要特点
窗函数设计FIR滤波器是从时域进行设计的。理想低通滤波器加窗处理后,主要受两方面影响。
- 🤔滤波器的频率响应在不连续点出现过渡带,过渡带的宽度取决于窗函数主瓣的宽度,一般过渡带宽度与N成反比
- 🤔滤波器在通带和主带产生波纹,主要是窗函数的频谱的旁瓣造成;旁瓣的高度要尽可能小,让能量集中在主瓣,减小通带和阻带之间的波纹;主瓣宽度尽可能窄,以获得尽可能陡的过渡带,即N要大。但是这两点又是互相矛盾的:降低旁瓣高度那么主瓣会变宽,让主瓣变窄那么旁瓣会变高。
因此可以使用不同类型的窗函数来改善不均匀收敛
器的频率响应在不连续点出现过渡带,过渡带的宽度取决于窗函数主瓣的宽度,一般过渡带宽度与N成反比
2. 滤波器在通带和主带产生波纹,主要是窗函数的频谱的旁瓣造成;旁瓣的高度要尽可能小,让能量集中在主瓣,减小通带和阻带之间的波纹;主瓣宽度尽可能窄,以获得尽可能陡的过渡带,即N要大。但是这两点又是互相矛盾的:降低旁瓣高度那么主瓣会变宽,让主瓣变窄那么旁瓣会变高。
因此可以使用不同类型的窗函数来改善不均匀收敛
🥰🥰🥰如果看到这个最好关注并留下一些精彩评论🥰🥰🥰
文章出处登录后可见!
已经登录?立即刷新