FIR滤波器设计与实现.doc
FIR滤波器设计与实现数字信号处理基于哈明窗的FIR数字滤波器的设计DSP实验报告刘宇杰 0928401107 信息工程2021/12/23一、实验目的(1) 通过实验稳固FIR滤波器的认识与理解。(2) 熟练掌握FIR低通滤波器的窗函数设计方法。(3) 理解FIR的具体应用。二、实验内容在通信、信息处理以及信号检测等应用领域广泛使用滤波器进展去噪与信号的增强。FIR滤波器由于可实现线性相位特性以及固有的稳定特征而等到广泛应用,其典型的设计方法是窗函数设计法。设计流程如下:1设定指标:截止频率fc,过渡带宽度f,阻带衰减A。2求理想低通滤波器LPF的时域响应hdn。3选择窗函数wn,确定窗长N。4将hdn右移N-1/2点并加窗获取线性相位FIR滤波器的单位脉冲响应hn。5求FIR的频域响应He,分析是否满足指标。如不满足,转3重新选择,否那么继续。6求FIR的系统函数Hz。7依据差分方程由软件实现FIR滤波器或依据系统函数由硬件实现。实验要求采用哈明窗设计一个FIR低通滤波器并由软件实现。哈明窗函数如下:wn=0.54-0.46cos,0nN-1;设采样频率为fs=10kHz。实验中,窗长度N与截止频率fc应该都能调节。具体实验内容如下:1设计FIR低通滤波器FIR_LPF书面进展。2依据差分方程编程实现FIR低通滤波器。到fc=2000Hz,N=65的FIR_LPF,求输出信号yn,理论计算并画出0ffs范围输入信号xn与输出信号yn的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。到fc=1100Hz,N=65的FIR_LPF,求输出信号yn,理论计算并画出0ffs范围输入信号xn与输出信号yn的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。到fc=2100Hz,N=65的FIR_LPF,求输出信号yn,理论计算并画出0ffs范围输入信号xn与输出信号yn的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。到fc=1100Hz,N=65的FIR_LPF,求输出信号yn,理论计算并画出0ffs范围输入信号xn与输出信号yn的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。到fc=1990Hz,N=65的FIR_LPF,求输出信号yn,理论计算并画出0ffs范围输入信号xn与输出信号yn的幅度谱,标出峰值频率,观察滤波器的实际输出结果,分析其正确性。三、实验分析如果采用哈明窗函数设计因果线性相位低通滤波器FIR,所设计的FIR低通滤波器单位脉冲响应hn如式。hn=hdnwn=,0nN-1如果输入函数为xn,那么yn=xn*h(n)。四、实验结果1MATLAB 程序如下:function FIR = fir(fc,N,A,a,B,b,C,c)%窗函数设计n = 0 : N-1; %窗函数、LPF的横坐标fs = 10000; %采样频率10KHZwc = 2 * pi * fc/fs;hd = n;for k = 1 : (N-1)/2 hd(k) = sin(wc * (k-1-(N-1)/2) ./ ( pi *(k-1-(N-1)/2); %LPF纵坐标endfor k =(N-1)/2 + 2 : N hd(k) = sin(wc * (k-1-(N-1)/2) ./ ( pi *(k-1-(N-1)/2); %LPF纵坐标endhd(N-1)/2+1) = wc/pi;wn = 0.54 - 0.46*cos(2*pi*n/(N-1); %哈明窗窗函数hn = hd .* wn; %FIR滤波器时域表达式%窗函数频谱w = 0 : 0.001*pi :0.999* pi;W = 0:999;for k = 1 : 1000; W(k) = 0; n = 1; while(n < N+1) W(k) = hd(n) * exp(-j*k*pi/1000*n)+ W(k); n = n + 1; endend%输入频谱n = 0 : 999;x = A * sin ( a * pi * n ) + B * cos ( b * pi * n) + C* sin ( c * pi * n );X = x;s = 0;for k = 1 : 1000 X(k) = 0; n = 1; while( n < 1001) X(k) = X(k) + x(n) * exp(-j * 2* pi *(k-1)*(n-1)/1000); n = n + 1; end if k < 500 if s < abs(X(k)& (s = abs(X(k) s = abs(X(k); m = k - 1; end endendY = X .* W;t = 0 : N-1; %过渡变量k = 0 : 0.002 * pi : 1.998 *pi;subplot(4,1,1); %图1plot(t,hn); %窗函数时域图subplot(4,1,2); %图2plot(k/2,20*log10(abs(W); %窗函数频谱图subplot(4,1,3); %图3plot(k,abs(X),'.-'); %输入函数频谱图subplot(4,1,4); plot(k,abs(Y),'.-');f = m /1000 * fssend (3) 当f=800Hz时,峰值为1500(4) xn=)当f=1000Hz时,峰值为750(5) xn=)当f=1000Hz时,峰值为750(6) xn=)+)当f=4500Hz时,峰值为2500(7) xn=)+)当f=1000Hz时,峰值为750五、思考题1、当哈明窗长度N比65小32或大129的话,实验结果如何变化?1当N=32时A B:xn=)C:xn=)D:xn=)+)E xn=)+)2当N=129时A B:xn=)C:xn=)D:xn=)+)E xn=)+)2、当采用矩形窗的话,实验34的结果是怎样的?矩形窗设计的FIR低通滤波器的单位脉冲响应为:hn=hdnwn= ,0nN-1(4)(5)xn=)六、总结通过本次实验,我了解了FIR滤波器的设计与实现,熟悉MATLAB这一软件的应用。通过实践来稳固书本上的知识。第 8 页