基于脉冲响应不变法的dsp设计.docx
《基于脉冲响应不变法的dsp设计.docx》由会员分享,可在线阅读,更多相关《基于脉冲响应不变法的dsp设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于脉冲响应不变法的dsp设计
实验五利用脉冲响应不变法设计IIR数字滤波器
一、实验目的
1.掌握利用脉冲响应不变法设计IIR数字滤波器的原理及具体方法。
2.加深理解数字滤波器和模拟滤波器之间的技术指标转化。
3.掌握脉冲响应不变法设计IIR数字滤波器的优缺点及适用范围。
二、实验设备与环境
计算机、MATLAB软件环境。
三、实验基础理论
1.基本原理
从时域响应出发,使数字滤波器的单位脉冲响应
模仿模拟滤波器的单位冲击响应
等于
的取样值。
2.变换方法
(1)将
进行部分分式展开
(2)对
进行拉式反变换
(3)对
时域采样得到
(4)对
进行Z变换
3.设计步骤
(1)确定数字滤波器性能指标
(2)将数字滤波器频率指标转换成相应的模拟滤波器频率指标
(3)根据指标
设计模拟滤波器
将
展成部分分式形式
(4)把模拟极点
转换成数字极点
,得到数字滤波器
可见
至
间的变换关系为
在MATLAB中有两种方法可以实现上述变换。
方法1:
利用residue函数和residuez函数实现脉冲响应不变法,这两个函数的使用方法如下:
[r,p,k]=residue(b,a)
[b,a]=residue(r,p,k)
实现多项式形式
和部分分式形式
之间的转换。
[r,p,k]=residuez(b,a)
[b,a]=residuez(r,p,k)
实现多项式形式
和部分分式形式
之间的转换。
方法2:
MATLAB提供了impinvar函数采用脉冲响应不变法实现模拟滤波器到数字滤波器的变换,其使用方法如下:
[bz,az]=impinvar(b,a,fs)采用脉冲响应不变法将模拟滤波器系统函数的系数向量b和a转换成为数字滤波器系统函数的系统向量bz和az,fs为采样率。
[bz,az]=impinvar(b,a)采样频率默认为1的情况向下,采用脉冲响应不变法将模拟滤波器变换为数字滤波器。
四、实验内容
1.设采样频率,采用脉冲响应不变法设计一个三阶巴特沃斯数字低通滤波器,其3dB截止频率。
实验代码与实验结果:
N=3;
fs=4000;
fc=1000;
Wc=0.25*pi;
[b,a]=butter(N,Wc,'s');
[bz,az]=impinvar(b,a);
w=[0:
500]*pi/500;
[H,w]=freqz(bz,az);
subplot221;
plot(w/pi,abs(H));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot222;
plot(w/pi,20*log10(abs(H)));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot223;
plot(w/pi,angle(H)/pi);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
subplot224;
grd=grpdelay(bz,az,w);
plot(w/pi,grd);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
2.设采样频率,设计数字低通滤波器,满足如下指标
通带截止频率:
,通带波动:
阻带截止频率:
,阻带衰减:
要求分别采用巴特沃斯、切比雪夫I型、切比雪夫II型和椭圆模拟原型滤波器及脉冲响应不变法进行设计。
结合实验结果,分别讨论采用上述方法设计的数字滤波器是否都能满足给定指标要求,分析脉冲响应不变法设计IIR数字滤波器的优缺点及适用范围。
实验代码与实验结果:
(1)巴特沃斯
fs=10000;
fp=1000;
fst=1500;
Wp=0.1*pi;
Ws=0.15*pi;
Rp=1;
As=15;
N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws)));
Wc=Wp/((10^(Rp/10)-1)^(1/(2*N)));
[b,a]=butter(N,Wc,'s');
[bz,az]=impinvar(b,a);
w=[0:
500]*pi/500;
[H,w]=freqz(bz,az);
subplot221;
plot(w/pi,abs(H));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot222;
plot(w/pi,20*log10(abs(H)));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot223;
plot(w/pi,angle(H)/pi);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
subplot224;
grd=grpdelay(bz,az,w);
plot(w/pi,grd);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
(2)切比雪夫I型
fs=10000;
fp=1000;
fst=1500;
Rp=1;
As=15;
Ap=Rp;
epc=sqrt(10^(Ap/10)-1);
Wp=2*pi*fp;
Wc=Wp;
Wst=2*pi*fst;
N=ceil(acosh(sqrt(10^(0.1*As)-1)/epc)/acosh(Wst/Wc));
[ba]=cheby1(N,Rp,Wc,'s');
[bzaz]=impinvar(b,a,fs);
w=[0:
500]*pi/500;
[Hw]=freqz(bz,az);
subplot221;
plot(w/pi,abs(H));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot222;
plot(w/pi,20*log10(abs(H)));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot223;
plot(w/pi,angle(H)/pi);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
subplot224;
grd=grpdelay(bz,az,w);
plot(w/pi,grd);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
(3)切比雪夫II型
fs=10000;
fp=1000;
fst=1500;
Rp=1;
As=15;
Ap=Rp;
epc=sqrt(10^(Ap/10)-1);
Wp=2*pi*fp;
Wst=2*pi*fst;
Wc=Wst;
N=ceil(acosh(sqrt(10^(0.1*As)-1)/epc)/acosh(Wst/Wp));
[ba]=cheby2(N,As,Wc,'s');
[bzaz]=impinvar(b,a,fs)
w=[0:
500]*pi/500;
[Hw]=freqz(bz,az);
subplot221;
plot(w/pi,abs(H));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot222;
plot(w/pi,20*log10(abs(H)));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot223;
plot(w/pi,angle(H)/pi);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
subplot224;
grd=grpdelay(bz,az,w);
plot(w/pi,grd);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
(4)椭圆模拟原型滤波器
fs=10000;
fp=1000;
fst=1500;
Rp=1;
As=15;
Ap=Rp;
epc=sqrt(10^(Ap/10)-1);
Wp=2*pi*fp;
Wst=2*pi*fst;
Wc=Wp;
A=10^(As/20);
k1=epc/(sqrt(A^2-1));
k=Wp/Wst;
N=ceil(ellipke(k)*ellipke(sqrt(1-k1^2))/ellipke(k1)/ellipke(sqrt(1-k^2)));
[bzaz]=ellip(N,Rp,As,fp/fs*pi)
w=[0:
500]*pi/500;
[Hw]=freqz(bz,az);
subplot221;
plot(w/pi,abs(H));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot222;
plot(w/pi,20*log10(abs(H)));
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|(dB)');
gridon;
subplot223;
plot(w/pi,angle(H)/pi);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
subplot224;
grd=grpdelay(bz,az,w);
plot(w/pi,grd);
xlabel('\omega(\pi)');
ylabel('|H(e^j^\omega)|');
gridon;
用脉冲响应不变法设计IIR数字滤波器的优缺点及适用范围:
优点:
运算简单,容易实现。
可利用模拟滤波器设计技术。
缺点:
由于发生混叠效应是阻带增益降低,容易不满足最初要求。
且不能用FFT技术。
不能够设计高通和带阻滤波器。
适用范围:
不能够设计高通和带阻滤波器。
用于设计规格化选频滤波器,h(n)无限长,用于模拟滤波器数字化。
低阶次更容易实现。
五、实验心得与体会
通过这次实验,我掌握了利用MATLAB实现脉冲响应不变法设计IIR数字滤波器的具体方法。
加深了对其设计原理的理解和认识,在实验过程中使我对数字滤波器和模拟滤波器之间的技术指标转化有了深刻理解,并且由直观的实验结果和理论课知识相结合使我掌握了脉冲响应不变法设计IIR数字滤波器的整个过程以及这种方法的优缺点及适用范围。
所以,这次实验使我受益匪浅。