数字信号处理实验报告
姓名:孔德权
学院:电信学院 学号:101045113 指导老师:韩萍
实验三 IIR数字滤波器的设计及滤波实现
1、实验目的
(1) 熟悉用双线性变换法设计IIR数字滤波器的原理与方法。 (2) 掌握数字滤波器的设计方法。
(3) 通过观察对实际心电图信号的滤波过程,获得数字滤波的感性认
识。
2、实验原理
基于模拟滤波器数学模型--微分方程的积分,利用对积分的数值逼近可以得到相应的数字滤波器。假设模拟滤波器的系统函数
Ha(s)Y(s)X(s)d0C1sC0
对模拟滤波器取样后逼近后,得到的数字滤波器系统函数
H(z)Y(z)X(z)C1d021zT1z11
C0可见,数字滤波器可通过下述变换关系有模拟滤波器得到
1z1T2T2ss2T2Ts
s上述s平面到z平面之间的变换是双线性变换关系,故称之为“双线性”变换。它对高阶系统同样成立。
3、实验内容
(1) 用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计参
数为:在低通频带内频率低于0.2时,最大衰减小于1dB;在阻带内[0.3,]频率区间上,最小衰减大于15dB。
(2) 以0.02为采样间隔,打印出数字滤波器在频率区间[0,/2]上
的幅频响应特性曲线。
(3) 用所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理,
并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
4、实验步骤
(1) 复习有关巴特沃斯模拟滤波器的设计和用双线性变换法设计IIR
数字滤波器的内容,即变换关系。根据教材中p194页例题中给定的设计指标,调用MATLAB信号处理工具箱函数buttord和butter设计出相应的数字滤波器H(Z).
(2) 编写滤波器仿真程序,完成对实际采集的心电图信号序列x(n)(具
体数据见下面)的总响应序列y(n),可直接调用MATLAB filter 函数实现仿真。
[附:人体心电图采样信号在测量过程中往往受到工业高频干扰,所以,必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。下面的序列就是一个实际心电图信号采样序列样本x(n),其中存在高频干扰,实验时,将其作为输入信号,滤除其中的干扰成分。
4, 2, 0, 4, 6, 4, 2, 4, 6, 6, 4, 4, 6, 6,2, 6, 12 ,8, 0, 16, 38, 60, 84, -90, -66, -32, -4, -2,x(n)-4, 8, 12, 12, 10, 6, 6, 6, 4, 0, 0, 0, 0, 0, -2, -4, 0, 0, 0, -2,-2, 0, 0, -2, -2, -2, -2, 0
(3) 在计算机上运行仿真程序,并调用绘图子程序,完成实验内容(2)
和(3)。
5、实验过程
clear all; wp=0.2*pi; ws=0.3*pi; Rp=1; Rs=15;
[n,wn]=buttord(wp/pi,ws/pi,Rp,Rs); [b,a]=butter(n,wn); N=0.5/(0.02); figure(1); freqz(b,a,N);
title('滤波器的扶贫响应曲线');
xn=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,0]; figure(2); subplot(2,1,1); stem(xn,'.');
title('心电图信号采样序列x(n)'); yn=filter(b,a,xn); subplot(2,1,2) stem(yn,'.');
title('滤波后的心电图信号');
6、实验结果
7、思考题
用双线性变换法设计数字滤波器过程中,变换公式s值对设计结果有无影响?为什么?
21zT1z11中T的取
答: T的取值对设计结果没有影响,因为不管是设计模拟滤波器还是由模滤波器转换为数字滤波器的过程中系数2/T均被约分掉。
实验四 FIR数字滤波器的设计及滤波实现
1、实验目的
(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。 (2)熟悉线性相位FIR数字滤波器特性。 (3)了解各种窗函数对滤波特性的影响。
2、实验原理
如果所希望的滤波器的理想频率响应函数为Hd(ejw),则其对应的单位脉冲响应为
hd(n)12Hd(ejw)ejwndw
窗函数设计方法的基本原理是用有限长单位脉冲响应序列h(n)逼近hd(n)。由于
hd(n)往往是无限长序列,且是因果的,所以用窗函数w(n)将hd(n)截断,并进
行加权处理,得到
h(n)hd(n)w(n)
h(n)就作为实际设计的H(ejwFIR数字滤波器的单位脉冲响应序列,其频率响应函数
)为
N1jwjwnH(e)h(n)en0
式中,N为所选窗函数w(n)的长度。
这里需要注意的是:设计出的滤波器性能取决于窗函数w(n)的类型和窗口的长度N的取值,设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度(各类窗函数的频率特性见教材的第三章)。
选定窗函数和长度N后,求出单位脉冲响应h(n)hd(n)w(n)和H(ejw)。
H(ejw)是否满足要求,要进行演算。一般在h(n)尾部加零使长度满足2的整次
幂,以便用FFT计算H(ejw),如果观察细节,补领点数增多即可。如果H(ejw)不满足设计要求,则要重新选择窗函数类型和长度N,再次验算,直至满足要求。
如果要求线性相位特性,则h(n)还必须满足
h(n)h(N1n)
根据上式中的正、负和长度N的奇、偶性又将线性相位FIR滤波器分为四类,要根据所设计的滤波特性正确选择其中一类。例如要设计线性相位低通特性,可选择h(n)h(N1n)一类,而不能选h(n)h(N1n)一类。
3、实验步骤
(1) 复习用窗函数法设计FIR数字滤波器一节内容,阅读本实验原理,掌
握 设计步骤。
(2)
(a)
编写程序
编写能产生矩形窗、升余弦窗的窗函数子程序。
(b) 编写主程序。主程序框图如下(仅供参考),其中幅度特性要求用dB
表示。
设
开始H(k)DFT[h(n)]
H(k)HR(k)jHI(k)
|H(k)|HR(k)jHI(k)32读入窗口长度N
计算hd(n)画图时,用20lg|H(k)|打印幅度特性。 第k点对应的频率wk2Nk调用窗函数子程序求w(n)。为使曲线
计算h(n)hd(n)w(n)包络更接近H(ejw)的幅频特性,DFT变换 的区间要选得大一些。例如窗口长度N=33 时,可通过在h(n)末尾补零的方法,使长 度变为64,再进行64点的DFT,则可得到 结束调用子程序(函数)计算H(k)=DFT[h(n)]调用绘图子程序(函数)绘制H(k)幅度和相位曲线 更精确的幅度衰减特性曲线。
4、上机实验内容
(1) 用升余弦窗设计一线性相位低通FIR数字滤波器,截止频率wc4,窗
口长度N=15,33。要求在两种窗口长度情况下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB带宽和20dB带宽。总结窗口长度N对滤波特性的影响。
设计低通FIR数字滤波器时,一般以理想低通滤波特性为逼近函数
Hd(ejw),即
jwa , |w|wce)0 , wc|w|Hd(ejw
其中,aN12
1212hd(n) Hd(eejwajw)edwjwndwwcwcejwn
sin[wc(na)](na)(2) N=33, wc4,用两种窗函数设计线性相位低通滤波器。绘制相应的幅
频特性曲线,观察3dB和20dB带宽以及阻带最小衰减,比较两种窗函数的滤波特性的影响。
5、实验过程
clear all; N=15; wp=0.25*pi; window=hanning(N); b=fir1(N-1,wp/pi,window); figure(1); freqz(b,1,1024); title('衰减特性(db)'); figure(2); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=33; wp=0.25*pi; window=hanning(N); b=fir1(N-1,wp/pi,window); figure(3); freqz(b,1,1024); title('衰减特性(db)'); figure(4); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=15; wp=0.25*pi; window=hamming(N); b=fir1(N-1,wp/pi,window); figure(5); freqz(b,1,1024); title('衰减特性(db)'); figure(6); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=33; wp=0.25*pi; window=hamming(N); b=fir1(N-1,wp/pi,window); figure(7); freqz(b,1,1024); title('衰减特性(db)'); figure(8); subplot(2,1,1);
stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=15; wp=0.25*pi;
window=blackman(N); b=fir1(N-1,wp/pi,window); figure(9); freqz(b,1,1024); title('衰减特性(db)'); figure(10); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=33; wp=0.25*pi;
window=blackman(N); b=fir1(N-1,wp/pi,window); figure(11); freqz(b,1,1024); title('衰减特性(db)'); figure(12); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=15; wp=0.25*pi; window=boxcar(N);
b=fir1(N-1,wp/pi,window); figure(13); freqz(b,1,1024); title('衰减特性(db)'); figure(14);
subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性'); N=33; wp=0.25*pi; window=boxcar(N);
b=fir1(N-1,wp/pi,window); figure(15); freqz(b,1,1024); title('衰减特性(db)'); figure(16); subplot(2,1,1); stem(b,'.');
title('实际低通滤波器'); subplot(2,1,2); y=freqz(b,1,1024); plot(abs(y)); title('幅频特性');
6、实验结果 (1)汉宁窗:
窗口长度N=15
窗口长度N=33
(2)汉明窗:
窗口长度N=15
窗口长度N=33
(3) 布莱克曼窗:
窗口长度N=15
窗口长度N=33
(4) 矩形窗:
窗口长度N=15
窗口长度N=33
7、思考题
(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数
法设计线性相位低通滤波器?写出步骤. 答:步骤如下:
① 首先确定模拟带通滤波器的技术指标。
② 确定归一化低通技术要求 ③ 设计归一化低通
clear all;
N=15; %N为窗口长度 wp=0.25*pi; %wp为截止频率 window=hanning(N);
b=fir1(N-1,wp/pi,window);%频率归一化 figure(1);
freqz(b,1,1024); %衰减特性显示
(2) 如果要求用窗函数法设计带通滤波器,且给定上、下边带截止频率w1和
w2,试求理想带通的单位脉冲响应hd(n)
答:通过w1和w2求出wc这样便可以利用公式hdn=sin[Wc(n-a)]/[pi*(n-a)]求
出hdn。
因篇幅问题不能全部显示,请点此查看更多更全内容