实验五、双线性变换法设计IIR 数字滤波器
一、实验目的:
1、熟悉用双线性变换法设计IIR 数字滤波器的原理与方法。
2、掌握数字滤波器的计算机仿真方法。
3、熟悉Batterworth滤波器设计方法及特点
二、实验原理
(一)、IIR数字滤波器的设计步骤:
① 按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标;
② 根据模拟滤波器技术指标设计为响应的模拟低通滤波器;
③ 跟据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器;
④ 如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。
在MATLAB中,经典法设计数字滤波器主要采用以下步骤:
IIR数字滤波器设计步骤
二)、用模拟滤波器设计数字滤波器的方法
1、冲激响应不变法:
冲激响应不变法是从时域出发,要求数字滤波器的冲激响应h(n) 对应于模拟滤波器h(t) 的等间隔抽样。
优点:时域逼近良好;保持线性关系。
缺点:频域响应混叠。只适用于限带低通滤波器和带通滤波器
2、双线性变换法
优点:克服了频域混叠
缺点:高频时会引起畸变
1)冲激响应不变法impinvar
格式:[BZ,AZ]= impinvar(B,A,Fs)
功能:把具有[B,A]模拟滤波器传递函数模型转换为采样频率为Fs的数字滤波器的传递函数模型[BZ,AZ],Fs默认值为1。
例:一个4阶的Butterworth模拟低通滤波器的系统函数如下:
试用冲激响应不变法求出Butterworth模拟低通数字滤波器的系统函数。
num=1;
den=[1,sqrt(5),2,sqrt(2),1];
[num1,den1]=impinvar(num,den)
2)双线性变换法bilinear
格式一:[Zd,Pd,Kd]= bilinear(Z,P,K,Fs)
功能:把模拟滤波器的零极点模型转换成数字滤波器的零极点模型,Fs是采样频率
格式二:[numd,dend]= bilinear(num,den,Fs)
功能:把模拟滤波器的传递函数模型转换为数字滤波器的传递函数模型。
例:一个三阶的模拟Butterworth模拟低通滤波器的系统函数如下:
,试用双线性变换法求出数字Butterworth数字低通滤波器的系统函数。
num=1;
den=[1,sqrt(3),sqrt(2),1];
[num1,den1]=bilinear(num,den,1)
3) IIR数字滤波器的频率变换实现
步骤:
1 按一定的规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标
2 根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N和截止频率Wc
3 利用最小阶数N产生模拟低通原型
4 利用截止频率Wc把模拟低通滤波器原型转换为模拟低通、高通、带通、带阻滤波器
5 利用冲激响应不变法或双线性变换法把模拟滤波器转换为数字滤波器
表一 IIR滤波器阶次估计
函数名
功能说明
buttord
计算Butterworth滤波器的阶次及截止频率
cheb1ord
计算ChebyshevⅠ滤波器的阶次
cheb2ord
计算ChebyshevⅡ滤波器的阶次
ellipord
计算椭圆滤波器的最小阶次
表二  模拟低通滤波器原型设计
函数名
功能说明
buttap
Butterworth模拟低通滤波器原型设计
cleb1ap
ChebyshevⅠ模拟低通滤波器原型设计
cheb2ap
ChebyshevⅡ模拟低通滤波器原型设计
ellipap
椭圆模拟低通滤波器原型设计
表三 模拟滤波器变换函数
函数名
功能说明
lp2bp
模拟低通转换为带通
lp2bs
模拟低通转换为带阻
lp2hp
模拟低通转换为高通
lp2lp
改变模拟低通的截止频率
(三)、数字滤波器的设计
1. 数字滤波器的设计参数
滤波器的4个重要的通带、阻带参数为:
:通带截止频率(Hz)      :阻带起始频率(Hz)
:通带内波动(dB),即通带内所允许的最大衰减;
:阻带内最小衰减
设采样速率(即奈奎斯特速率)为,将上述参数中的频率参数转化为归一化角频率参数:
:通带截止角频率(rad/s) ,;   
:阻带起始角频率(rad/s) ,
通过以上参数就可以进行离散滤波器的设计。
2、巴特沃斯滤波器设计
1) 巴特沃斯滤波器阶数的选择:
在已知设计参数之后,可利用“buttord”命令可求出所需要的滤波器的阶数和3dB截止频率,其格式为:
[n,Wn]=buttord[Wp,Ws,Rp,Rs],其中Wp,Ws,Rp,Rs分别为通带截止频率、阻带起始频率、通带内波动、阻带内最小衰减。返回值n为滤波器的最低阶数,Wn为3dB截止频率。
2) 巴特沃斯滤波器系数计算:
由巴特沃斯滤波器的阶数n以及3dB截止频率Wn可以计算出对应传递函数H(z)的分
子分母系数,MATLAB提供的命令如下:
(a)巴特沃斯低通滤波器系数计算:
[b,a]=butter(n,Wn),其中b为H(z)的分子多项式系数,a为H(z)的分母多项式系数
(b)巴特沃斯高通滤波器系数计算:[b,a]=butter(n,Wn,High)
(c)巴特沃斯带通滤波器系数计算:[b,a]=butter(n,[W1,W2]),其中[W1,W2]为截止频率,是2元向量,需要注意的是该函数返回的是2*n阶滤波器系数。
(d)巴特沃斯带阻滤波器系数计算:[b,a]=butter(ceil(n/2),[W1,W2],stop),其中[W1,W2]为截止频率,是2元向量,需要注意的是该函数返回的也是2*n阶滤波器系数。
三、巴特沃斯滤波器设计实例:
例题1:采样速率为8000Hz,要求设计一个低通滤波器,=2100Hz,=2500Hz,=3dB,=25dB。
1、采样速率为10000Hz,要求设计一个巴特沃斯带阻滤波器,=[1000Hz,1500Hz],=[1200Hz,1300Hz],=3dB,=30dB。
用直接设计法
程序如下:
fn=8000;%采样频率
fp=2100;  %通带截止频率
fs=2500; %阻带起始频率
Rp=3; %通带最大衰减
Rs=25;%阻带最小衰减
frequency函数计算频数Wp=fp/(fn/2);%计算归一化角频率
Ws=fs/(fn/2);
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%计算阶数和截止频率
[b,a]=butter(n,Wn);%计算H(z)分子、分母多项式系数
[H,F]=freqz(b,a,1000,8000);%计算H(z)的幅频响应,freqz(b,a,计算点数,采样速率)
subplot(2,1,1)
plot(F,20*log10(abs(H))) %画出幅频特性图
xlabel('Frequency(Hz)'); ylabel('Magnitude(dB)')
title('低通滤波器')
axis([0 4000 -30 3]);grid on
pha=angle(H)*180/pi;
subplot(2,1,2)
plot(F,pha);grid on %画出相频特性图
xlabel('Frequency(Hz)');
ylabel('phase');
用双线性变换法
wp=2100*2*pi; %利用
ws=2500*2*pi;
Rp=3;
Rs=25;
Fs=8000;
Ts=1/Fs;
%选择滤波器的最小阶数
[N,Wn]=buttord(wp,ws,Rp,Rs,'s');%创建butterworth模拟滤波器
[Z,P,K]=buttap(N);
%把滤波器零极点模型转化为传递函数模型
[Bap,Aap]=zp2tf(Z,P,K);
%把模拟滤波器原型转换成截至频率为Wn的低通滤波器
[b,a]=lp2lp(Bap,Aap,Wn);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
[bz,az]=bilinear(b,a,Fs);
%绘制频率响应曲线
[H,W]=freqz(bz,az);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。