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

2022-07-20 14:25:48 浏览数 (1)

一、实验目的 1. 熟悉线性相位 FIR 数字滤波器特性。 2. 了解各种窗函数对滤波特性的影响。 3. 掌握用窗函数法设计 FIR 数字滤波器的原理、方法及计算机编程。

 此时的h(n) 是有限长的,物理可实现。因此用h(n) 作为实际滤波器的系数。最后所得滤波 器的性能主要由所选窗函数 w(n) 的类型和它的长度 M 决定的。这种运算就称为“加窗”。以低通滤波器为例,说明用 MATLAB 实现窗函数法设计 FIR 滤波器的步骤: 1. 确定数字滤波器的性能要求:临界频率{ωk },滤波器单位脉冲响应长度 M; 2.根据性能要求,合理选择单位脉冲响应 h(n) 的奇偶对称性,从而确定理想频率相应H  (e ʲw) 的幅频特性和相频特性;

3.求理想单位脉冲响应hd(n) (在实际计算中,可对 Hd(e ʲw ) 按 N(N 远大于 M)点等距离采样,并对其求 IDFT 得 hN (n) ,用hN (n) 代替hd (n) ); 4.选择适当的窗函数 w(n) ,根据 h(n) = hd (n)w(n) 求所需设计的 FIR滤波器单位脉冲响应; 5.求 H (e ʲw ) ,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度 M,重复上述设计过程已得到满意的结果。         窗函数的傅式变换W (e ʲw ) 的主瓣决定了 H (e ʲw ) 过渡带宽,W (e ʲw ) 的旁瓣大小和多少决定了 H (e ʲw ) 在通带和阻带范围内波动幅度,常用的几种窗函数有:

 三、实验内容 1.  复习用窗函数法设计 FIR  数字滤波器的有关内容,阅读本实验原理与方法,掌握设计步骤。 2.用矩形窗和汉明窗设计一线性相位低通数字滤波器,截止频率▷c =1rad。窗口长度 M=25,49。要求在两种窗口长度情况下,分别求出h(n) 及其频率响应函数,并画出幅频特性和相频特性曲线,观察 3dB 带宽和 20dB 带宽。讨论窗口长度 M 对滤波特性的影响。

4. 根据以下指标设计一个 FIR  低通滤波器: 通带截止为 wp = 0.3π, 阻带截止频率为ws = 0.5π

,通带最大衰减为 Ap  = 0.25dB,阻带最小衰减为 As  = 50dB。选择一个合适的窗函数实现之,并画出该窗函数的频谱、实际单位脉冲响应频谱、理想滤波器单位脉冲响应频谱及 FIR 滤波器的幅度特性曲线。(提示:可以根据阻带的最小衰减来选定窗函数,然后根据所得窗函数的过渡带宽计算公式来确定窗的长度)         程序流程跟 3 的基本相同,只是要通过分析设计结果选择一个最好的窗函数用来做最后的设计。 5.根据下列技术指标设计一数字带通滤波器:

四、思考题 ①为什么用矩形窗来截取理想单位脉冲响应时会产生截断效应?能否用增大截取长度N 的方法来减小这种效应? ②为什么用三角、海明窗、布莱克曼窗来截取时能减小通带和阻带的波动?你能否用窗函数法设计一个带通滤波器?简述设计的方法。 ③自己试验涉及一定条件的带阻滤波器及高通滤波器。进一步熟悉窗函数法设计滤波器方法的应用。

五、 实验报告要求 1、 简述实验目的及原理。 2、 总结用窗函数法设计 FIR 滤波器的主要特点。 3、 简要回答思考题。

代码语言:javascript复制
wp=0.3*pi;ws=0.5*pi;tr_width=ws-wp;
M=ceil(6.6*pi/tr_width) 1;
n=[0:1:M-1];
wc=(ws wp)/2;
hd=ideal_lp(wc,M); w_ham=(hamming(M))'; h=hd.*w_ham;
[db,mag,pha,grd,w]=freqz_m(h,[1]); 
subplot(2,2,1);stem(n,hd);axis([0 M-1 -0.2 0.4]); 
title('Ideal Impulse Response');
xlabel('n');ylabel('hd(n)'); 
subplot(2,2,2);
stem(n,w_ham);axis([0 M-1 0 1.1]);
title('Hamming Window');xlabel('n');ylabel('w(n)');
subplot(2,2,3);stem(n,h);axis([0 M-1 -0.2 0.4]); 
title('Actual Impulse Response');xlabel('n');ylabel('h(n)'); subplot(2,2,4);plot(w/pi,db);axis([0 1 -100 10]);grid; 
title('Magnitude Response in dB');
xlabel('frequency in piunits');ylabel('Decibels');
代码语言:javascript复制
figure;clc;clear all;close all;
ws1=0.2*pi;wp1=0.4*pi;wp2=0.6*pi;ws2=0.8*pi;As=20;
tr_width=min((wp1-ws1),(ws2-wp2));
M=ceil(7*pi/tr_width) 1;
n=[0:1:M-1];
wc1=(ws1 wp1)/2;

wc2=(wp2 ws2)/2;
hd=ideal_lp(wc2,M)-ideal_lp(wc1,M);
w_bla=(blackman(M))'; h=hd.*w_bla;
[db,mag,pha,grd,w]=freqz_m(h,[1]); 
subplot(2,2,1);stem(n,hd);axis([0 M-1 -0.4 0.5]); 
title('Ideal Impulse Response');xlabel('n');ylabel('hd(n)'); 
subplot(2,2,2);
stem(n,w_bla);axis([0 M-1 0 1.1]);
title('Blackman Window');xlabel('n');ylabel('w(n)');
subplot(2,2,3);
stem(n,h);axis([0 M-1 -0.4 0.5]);
title('Actual Impulse Response');xlabel('n');ylabel('h(n)'); subplot(2,2,4);
plot(w/pi,db);axis([0 1 -150 10]);grid; 
title('Magnitude Response in dB');xlabel('frequency in piunits');ylabel('Decibels’)

0 人点赞