IIR数字滤波器设计及实现.docx
《IIR数字滤波器设计及实现.docx》由会员分享,可在线阅读,更多相关《IIR数字滤波器设计及实现.docx(11页珍藏版)》请在冰豆网上搜索。
IIR数字滤波器设计及实现
实验三IIR数字滤波器设计及实现
一、实验目的
(1)熟悉用脉冲响应不变法和双线性变换法设计IIR数字滤波器的原理与方法;
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数设计IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
二、实验原理
设计IIR数字滤波器一般采用脉冲响应不变法和双线性变换法。
脉冲响应不变法:
根据设计指标求出滤波器确定最小阶数N和截止频率Wc;计算相应的模拟滤波器系统函数
;将模拟滤波器系统函数
转换成数字滤波器系统函数
双线性变换法:
根据数字低通技术指标得到滤波器的阶数N;取合适的T值,几遍校正计算相应模低通的技术指标
;根据阶数N查表的到归一化低通原型系统函数
,将
代入
,去归一化得到实际的
;用双线性变换法将
转换成数字滤波器
三、实验内容及步骤
1、用脉冲响应不变法设计
(1)根据设计指标求出滤波器确定最小阶数N和截止频率Wc
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%T=1s的模拟滤波器设计指标
W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s';%确定butterworth的最小阶数N和频率参数Wn
得到结果为:
N=
7
Wn=
0.3266
即:
该设计指标下的模拟滤波器最小阶数为N=7,其截至频率为Wn=0.3266;
(2)计算相应的模拟滤波器系统函数
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%T=1s的模拟滤波器设计指标
W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s';%确定butterworth的最小阶数N和频率参数Wn
[B,A]=butter(N,1,'s'%计算相应的模拟滤波器系统函数
得到结果为:
B=
1.0e-003*
00000000.3966
A=
1.00001.46781.07730.50840.16610.03750.00550.0004
>>
(3)将模拟滤波器系统函数
转换成数字滤波器系统函数
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%T=1s的模拟滤波器设计指标
W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s';%确定butterworth的最小阶数N和频率参数Wn
[B,A]=butter(N,1,'s';%计算相应的模拟滤波器系统函数
[Bz,Az]=impinvar(B,A%用脉冲相应不变法将模拟滤波器转换成数字滤波器
sys=tf(Bz,Az,T;%得到传输函数
Bz=
1.0e-004*
-0.00000.00450.20450.87470.70940.10900.00160
Az=
1.0000-5.541513.2850-17.842814.4878-7.10691.9491-0.2304
>>
>>
即:
由Bz和Az可以写出数字滤波器系统函数为:
Transferfunction:
-9.992e-015z^7+4.454e-007z^6+2.045e-005z^5+8.747e-005z^4+7.094e-005z^3+1.09e-005z^2
+1.561e-007z
---------------------------------------------------------------------------------------------------------
z^7-5.541z^6+13.28z^5-17.84z^4+14.49z^3-7.107z^2+1.949z-0.2304
Samplingtime:
4.5351e-005
>>
(4)绘图
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%T=1s的模拟滤波器设计指标
W1p=fp/Fs*2;W1s=fs/Fs*2;%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s';%确定butterworth的最小阶数N和频率参数Wn
[B,A]=butter(N,Wn,'s';%计算相应的模拟滤波器系统函数
[Bz,Az]=impinvar(B,A;%用脉冲响应不变法将模拟滤波器转换成数字滤波器
sys=tf(Bz,Az,T;%得到传输函数
[H,W]=freqz(Bz,Az,512,Fs;%生成频率响应参数
plot(W,20*log10(abs(H;%绘制幅频响应
gridon;%加坐标网格
得到结果为:
观察实验结果图可看到:
在频率为3402Hz处频率为衰减2.015db,在频率为5017Hz处幅度衰减21.36db。
且相位不满足线性。
2、用双线性变换法完成上述设计
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%设计指标
Wp=2*tan(2*pi*fp*T/2/pi;Ws=2*tan(2*pi*fs*T/2/pi;%求归一化频率
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'%设计过渡模拟滤波器
结果为:
N=
6
Wn=
0.3749
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%设计指标
Wp=2*tan(2*pi*fp*T/2/pi;Ws=2*tan(2*pi*fs*T/2/pi;%求归一化频率
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s';
[B,A]=butter(N,Wn,'s';%计算相应的模拟滤波器系统函数
[Bz,Az]=bilinear(B,A,Fs%用双线性变换法转换成数字滤波器
结果为
>>
Bz=
1.0e-014*
00-0.17760.7105-0.71050.4441-0.0777
Az=
1.0000-5.999914.9997-19.999314.9993-5.99970.9999
>>
clear;closeall;clc;%开始准备
fp=3400;fs=5000;Fs=22050;Rp=2;Rs=20;T=1/Fs;%设计指标
Wp=2*tan(2*pi*fp*T/2/pi;Ws=2*tan(2*pi*fs*T/2/pi;%求归一化频率
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s';
[B,A]=butter(N,Wn,'s';
[Bz,Az]=bilinear(B,A,Fs;
sys=tf(Bz,Az,T
结果为:
Transferfunction:
-1.776e-015z^4+7.105e-015z^3-7.105e-015z^2+4.441e-015z-7.772e-016
-----------------------------------------------------------------------------
z^6-6z^5+15z^4-20z^3+15z^2-6z+0.9999
Samplingtime:
4.5351e-005
>>
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s'
[z,p,k]=buttap(N;%设计模拟低通原型的零极点增益参数
[Bp,Ap]=zp2tf(z,p,k;%将零极点增益转换成分子分母参数
[Bs,As]=lp2lp(Bp,Ap,Wn*pi*Fs;%将低通原型转换为模拟低通
[Bz,Az]=bilinear(Bs,As,Fs;
结果为:
Bz=
0.00470.02800.07000.09330.07000.02800.0047
Az=
1.0000-1.91612.1559-1.38660.5585-0.12570.0125
sys=tf(bz,az,T%给出传输函数H(z)
结果为:
Transferfunction:
0.004664z^6+0.02798z^5+0.06996z^4+0.09328z^3+0.06996z^2+0.02798z
+0.004664
----------------------------------------------------------------------------------
z^6-1.916z^5+2.156z^4-1.387z^3+0.5585z^2-0.1257z+0.01252
Samplingtime:
4.5351e-005
freqz(Bz,Az,512,Fs;%生成频率响应参数
gridon;%加坐标网格
title('双线性变换法';
结果为:
由图可以看出,设计满足要求,在频率为3402Hz处衰减1.009db,在频率为5017Hz处幅度衰减20.26db。
且相位不满足线性。
实验四FIR数字滤波器设计及实现
一、实验目的
(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)学会调用MATLAB函数设计与实现FIR滤波器。
二、设计原理
有限脉冲响应(FIR)数字滤波器的传输函数为:
,其单位脉冲响应就是系统传输函数各次项的系数。
设计FIR数字滤波器就是要根据给定的技术指标,确定系统单位脉冲响应h(n,使系统的相位特性线性、幅度特性逼近给定的技术指标。
如果h(n是实数序列,且满足偶对称或奇对称条件,则滤波器就具有严格的线性相位特性。
本实验设计FIR滤波器的采用窗口设计法。
窗口设计法是从时域出发,将理想滤波器的单位脉冲响应截取一段作为传输函数的系数。
通常情况下,滤波器指标往往在频域给出,算出的理想单位脉冲响应一般是非因果、无限长、物理上不可实现的,需先截短再右移使之成为有限长因果序列,只要截取的长度和方法合理,总能满足频域指标要求。
截短就是加窗,矩形窗最简单,在频域属最小平方逼近,但峰肩和波纹不太理想。
一般希望窗函数的频谱主瓣尽可能地窄,以获得较陡的过渡带,同时能量又要尽量集中在主瓣,以减小峰肩和波纹,进而增加阻带衰减。
实际工程中常用窗的特性及MATLAB函数比较如表1所示。
表1常用窗函数性能比较
窗类型
最小阻带衰减
主瓣宽度
精确过渡带宽
窗函数
矩形窗
21dB
4π/M
1.8π/M
boxcar
三角窗
25dB
8π/M
6.1π/M
bartlett
汉宁窗
44dB
8π/M
6.2π/M
hanning
哈明窗
53dB
8π/M
6.6π/M
hamming
布莱克曼窗
74dB
12π/M
11π/M
blackman
取凯塞窗时用kaiserord函数来得到长度M和β
kaiser
利用窗口设计法设计FIR数字滤波器的过程:
具体操作步骤如下:
1、对设计指标进行归一化处理。
数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标对采样频率进行归一化处理,归一化公式为:
2、根据阻带衰减要求和过渡带宽,由表1选择窗函数的类型并估计窗口长度M,此时滤波器的阶数为M-1(注意窗口长度与滤波器类型的关系)。
3、根据滤波器的理想频响求出理想单位脉冲响应
。
4、将理想单位脉冲响应与窗函数相乘,得系统单位脉冲响应。
5、用freqz函数验算技术指标是否满足要求。
三、实验内容及步骤
设计一线性相位FIR数字低通滤波器,要求通带临界频率fp=2000Hz,通带允许波动Rp=1dB,阻带临界频率fs=4000Hz,阻带衰减Rs=50db,截止频率Fc=(fp+fs/2=3000Hz,采样频率Fs=22050Hz。
clear;closeall;clc;
fp=2000;fs=4000;Fs=22050;Rp=1;Rs=50;%输入设计指标
W1p=fp/(Fs/2;W1s=fs/(Fs/2;W1c=(W1p+W1s/2;%求归一化频率
%选择窗函数的类型(Rs=50选哈明窗并估计窗口长度M
dW=W1s-W1p
M=ceil(6.6/dW
N=M+mod(M+1,2%选用第一类滤波器,保证N为奇数
结果为
dW=
0.1814
M=
37
N=
37
即:
滤波器阶数取满足要求的最小整数为37,带宽为0.1814
hn=fir1(N-1,W1c,hamming(N;%用哈明窗加窗
freqz(hn,1,512,Fs;
gridon;%绘制结果并加网络
结果为: