FIR数字滤波器设计——窗函数法

实验目的

本实验结合理论教材中FIR数字滤波器设计的教学内容中的窗函数设计法,学习和掌握窗函数法设计FIR数字滤波器的原理和实现过程,学习MATLAB设计FIR数字滤波器的相关函数的使用,掌握使用MATLAB设计FIR数字滤波器的过程与方法,从而加深对FIR数字滤波器常用指标和设计过程的理解。

实验内容

用窗函数法设计一个FIR数字低通滤波器。滤波器满足指标:通带截至频率fp=800Hz, 阻带截至频率fs=1000Hz,幅度特性单调下降,通带波纹0.5dB, 阻带最小衰减为40dB,抽样频率4000Hz。窗函数类型根据指标要求自行选定。

实验代码

clear;clc;close all
fc=4000;
ap=0.5;as=40;fp=800;fs=1000;
wp=2*pi*fp/fc;
ws=2*pi*fs/fc;
dw=ws-wp;
wc=(wp+ws)/2;
N=8*pi/dw;%阶数
N2=12*pi/dw;
 
nd = (N-1)/2;
w = hann(N)';
for n=0:N-1;
   hd(n+1)=sin(wc*(n-nd))/pi/(n-nd);
end
h1 = hd.*w;
H1=freqz(h1,1,512);
 
h2=fir1(N2-1,wc/pi,'low',blackman(N2));
H2=freqz(h2,1,512);
 
w=0:1/512:1-1/512;
 
figure(1);
H11=20*log10(abs(H1));
H22=20*log10(abs(H2));
v=plot(w,H11,w,H22,'r'); 
xlabel('\omega/\pi');ylabel('幅度(dB)');title('幅度特性')
hold on;
x1=wp/pi;x2=ws/pi;
y1=interp1(w,H11,x1);
y2=interp1(w,H11,x2);
y3=interp1(w,H22,x1);
y4=interp1(w,H22,x2);
plot(x1,y1,'-o');
plot(x2,y2,'-o');
plot(x1,y3,'-o');
plot(x2,y4,'-o');
legend(v,'汉宁窗','布莱克曼窗');

 实验结果

FIR数字滤波器设计——窗函数法_第1张图片

 如何选择窗函数?

  1. 根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N((或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为△w,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd (n)。
  2. 根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求滤波器频率应为Hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从w=O到w=2T采样N点,采用离散傅里叶反变换(IDFT)即可求出。
  3. 用窗函数wd(n)将hd(n)截断,并进行加权处理,得到如果要求线性相位特性,则h(n)还必须满足:根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类。例如,要设计线性相位低通特性可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。
  4. 验算技术指标是否满足要求,为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。

什么是吉布斯现象?如何改善?

答:

在改变截取长度N时,只会改变过度带宽的宽窄,而不会改变H(w)肩峰的相对值。频率截断会引起时域信号在不连续处产生“振铃效应”,这个现象成为吉布斯现象。

改善吉布斯现象的方法:

1.低通滤波器对信号频谱进行频域加窗,频窗有限引起时域的吉布斯波纹,可以考虑其它的频窗,如三角窗等

2.对时域加窗(时域截断)也会出现的吉布斯波纹,因此需要选择好合适的窗函数。

 

你可能感兴趣的:(数字信号处理基础,matlab,图像处理,开发语言)