IIR低通数字滤波器设计.docx
《IIR低通数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《IIR低通数字滤波器设计.docx(20页珍藏版)》请在冰豆网上搜索。
IIR低通数字滤波器设计
西南科技大学
课程设计报告
课程名称:
数字信号处理与通信原理课程设计
设计名称:
IIR低通数字滤波器设计
姓名:
杨广广
学号:
20064690
班级:
通信0603
指导教师:
詹曦
起止日期:
2009.6.20-2009.7.7
西南科技大学信息工程学院制
课程设计任务书
学生班级:
通信0603学生姓名:
杨广广学号:
20064690
设计名称:
IIR低通数字滤波器设计
起止日期:
2009.6.20-2009.7.3指导教师:
詹曦
设计要求:
1、IIR低通数字滤波器指标为:
;
2、采用冲激响应不变法分别设计上述三种数字滤波器;
3、分别绘制这三种数字滤波器的幅度响应曲线和相位响应曲线;
4、根据设计结果,对三种滤波器的性能进行比较和分析;
5、采用双线性变换法重新设计上述三种数字滤波器;
6、分别绘制这三种数字滤波器的幅度响应曲线和相位响应曲线;
7、对三种滤波器的性能进行比较;
8、将其与使用冲激响应不变法的设计结果进行比较和分析。
课程设计学生日志
时间
设计内容
2009.7.5上午
查阅资料,整理思路
2009.7.5下午
确定设计方案
2009.7.6
程序设计及调试,并书写报告
20097.7
答辩
课程设计考勤表
周
星期一
星期二
星期三
星期四
星期五
课程设计评语表
指导教师评语:
成绩:
指导教师:
年月日
IIR低通数字滤波器设计
一、设计的目的和意义
IIR低通数字滤波器设计是一个很基础也很重要的内容,因为滤波器设计是《数字信号处理技术》这门课的核心内容。
也可以说,数字信号处理的所有知识都是围绕滤波器的设计。
本设计旨在加深大家对数字信号处理基础知识的理解;加深对MATLAB基础知识的理解;掌握低通数字滤波器的设计方法;了解冲激响应不变法的特点。
通过设计还应该加深对冲击响应不变法基本原理的理解和了解冲激响应不变法的特点;加深对双线性变换法基本原理的理解和了解双线性变换法的特点。
本课程设计是对课堂知识的补充,通过设计可以提高我们对课堂基础知识的理解,同时能够将多门课程的知识内容整合在一起。
在设计过程中,不仅锻炼了我的思维能力,而且也培养了我设计的综合能力。
通过实用设计工具结合各方面的基础知识完成一个完整的设计对我来说是非常有意义的。
二、设计原理
1、数字滤波器原理
与模拟滤波器类似,数字滤波器按频率特性划分为低通、高通、带通、带阻、全通等类型。
由于频率响应的周期性,频率变量以数字频率w来表示(w=ΩT=Ω/fs,Ω为模拟角频率,T为抽样时间间隔,fs为抽样频率),所以数字滤波器设计中必须给出抽样频率。
一般情况下,数字滤波器是一个线性移不变离散时间系统,利用有限精度算法来实现。
2、双线性变换法工作原理
使数字滤波器的频率响应与模拟滤波器的频率响应相似。
冲激响应不变法、阶跃响应不变法是使数字滤波器在时域上模仿模拟滤波器,但是它们的缺点是产生频率响应的混叠失真。
双线性变换法也是一种由S平面到z平面的映射过程,双线性变换法与脉冲响应不变法不同,它是一种从S平面到z平面简单映射。
双线性变换中数字域与频率和模拟频率之间的非线性关系限制了它的应用范围,只有当非线性失真是允许的或能被裣时,才能采用双线性变换法,通常低通、高通、带通和带阻等滤波器等具有分段恒定的频率特性,可以采用预畸变的方法来补偿频率畸变,因此可以采用双线性变换设计方法。
3、脉冲响应不变法工作原理
冲激响应不变法遵循的准则是使数字滤波器的单位取样响应与参照的模拟滤波器的脉冲响应的取样值完全一样,即h(n)=ha(nT),其中T为取样周期。
实际是由模拟滤波器转换成为数字滤波器,就是要建立模拟系统函数Ha(S)与数字系统函数H(z)之间的关系。
脉冲响应不变法是从S平面映射到z平面,这种映射不是简单的代数映射,而是S平面的每一条宽为的横带重复地映射到整个z平面。
三、详细设计步骤
(一)冲激响应不变法IIR滤波器设计
1、编写并调试MATLAB程序。
实验需调用的MATLAB函数说明
(1)通过buttord进行巴特沃思滤波器阶数的选择
buttord函数可在给定滤波器性能的情况下,选择Butterworth滤波器最小的阶。
其格式为:
[n,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)
其中,Wp,Ws分别是通带和阻带的截止频率,其值为0≤Wp(或Ws)≤1,当其值为1时表示0.5fs;Rp,Rs分别是通带和阻带区的波纹系数;´s´为生成模拟滤波器;n为满足指定性能的Butterworth滤波器的阶数;Wn为滤波器的截止频率。
(2)构造出模拟滤波器的传输函数
采用自编函数u_buttap。
其格式为:
[b,a]=u_buttap(N,Omegac)
其中,b为模拟滤波器传输函数的分子多项式系数;a为模拟滤波器传输函数的分母多项式系数;N为Butterworth滤波器的阶数;Omegac为截止频率。
(3)冲击响应不变法实现模拟到数字的滤波器转换
impinvar函数可将模拟滤波器(b,a)转换成数字滤波器(bz,az),两者的冲激响应不变,即模拟滤波器的冲击响应按Fs取样后等同于数字滤波器的冲激响应。
其格式为:
[bz,az]=impinbar(b,a,Fs)
其中,b为模拟滤波器传输函数的分子多项式系数;a为模拟滤波器传输函数的坟墓多项式系数;Fs为采用率;bz为数字滤波器的系统函数H(z)的分子多项式系数;az为数字滤波器的系数函数H(z)的分母多项式系数.
2、修改MATLAB程序参数,体会用冲激响应不变法设计IIR滤波器的方法及所设计滤波器的特性。
(二)双线性变化法IIR滤波器设计
1、编写并调试MATLAB程序。
实验需调用的MATLAB函数说明
(1)通过buttord进行巴特沃斯滤波器阶数的选择,buttord函数说明见上一实验。
(2)构造出模拟滤波器的传输函数。
(3)双线性变换法实现模拟到数字的滤波器转换。
双线性变换为变量间的映射关系,在数字滤波器中,它是将S域或模拟域映射成Z域或数字域的标准方法,它可将以经典滤波器设计技术设计的模拟滤波器转换成等效的数字滤波器。
在MATLAB中其函数名称是bilinear。
其格式为:
[mumd,dend]=bilinear(num,den,Fs)
其中,mum为S域传递函数的分子;den为S域传递函数的分母;Fs为取样频率;numd为双线性变换后Z域传递函数的分母。
2、修改MATLAB程序参数,体会用双线性变换法设计ⅡR滤波器的方法及所设计滤波器的特性。
四、设计结果及分析
(一)设计结果
本次设计需要用冲激响应不变法和双线性变换法分别以Butterwordth滤波器、切比雪夫I型滤波器、切比雪夫II型滤波器为原型设计低通数字滤波器。
因此总共需要设计6个低通数字滤波器。
由题意IIR低通数字滤波器指标为:
Wp=0.2*pi数字通带截止频率(弧度)
Ws=0.3*pi数字阻带截止频率(弧度)
Rp=1dB通代衰减(dB)
As=15dB阻带衰减(dB)
具体的设计方法如下:
1、用冲激响应变换法实现Butterword低通数字滤波器
MATLAB程序:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,OmgC]=buttord(OmgP,OmgS,Rp,As,'s');%选取模拟滤波器的阶数
[cs,ds]=butter(N,OmgC,'s');%设计出所需的模拟低通滤波器
%[b,a]=impinvar(cs,ds,T);%应用脉冲响应不变法进行转换
[b,a]=bilinear(cs,ds,T);
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,2,3);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
波形如下图所示:
2、用双线性不变法设计Butterword低通数字滤波器
MATLAB程序:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,OmgC]=buttord(OmgP,OmgS,Rp,As,'s');%选取模拟滤波器的阶数
[cs,ds]=butter(N,OmgC,'s');%设计出所需的模拟低通滤波器
[b,a]=bilinear(cs,ds,T);%应用双线性变换法进行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,2,3);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
实验波形如下图:
3、用冲激响应不变法实现切比雪夫I型低通数字滤波器
MATLAB程序:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,wn]=cheb1ord(OmgP,OmgS,Rp,As);%选取模拟滤波器的阶数
[cs,ds]=cheby1(N,Rp,wn,'s');%设计出所需的模拟低通滤波器
[b,a]=impinvar(cs,ds,T);%应用脉冲响应不变法进行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,2,3);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
波形如下图所示:
4、用双线性变换法实现切比雪夫I型低通数字滤波器
MATLAB程序:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,wn]=cheb1ord(wp,ws,Rp,As);%选取模拟滤波器的阶数
[cs,ds]=cheby1(N,Rp,wn,'s');%设计出所需的模拟低通滤波器
[b,a]=bilinear(cs,ds,T);%应用双线性变换法进行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,2,3);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
波形如下图所示:
5、用冲激响应不变法实现切比雪夫II型低通数字滤波器
MATLAB程序:
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,wn]=cheb2ord(wp,ws,Rp,As);%选取模拟滤波器的阶数
[cs,ds]=cheby2(N,As,wn,'s');%设计出所需的模拟低通滤波器
[b,a]=impinvar(cs,ds,T);%应用脉冲响应不变法进行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,2,3);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
波形如下图所示:
6、用双线性变换法实现切比雪夫II型低通数字滤波器
MATLAB程序:
%双线性不变法
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10^(-Rp/20);
Atn=10^(-As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,wn]=cheb2ord(wp,ws,Rp,As);%选取模拟滤波器的阶数
[cs,ds]=cheby2(N,As,wn,'s');%设计出所需的模拟低通滤波器
[b,a]=bilinear(cs,ds,T);%应用双线性变换法进行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,1,1);
plot(w/pi,mag);
title('幅频特性');
xlabel('w(/pi)');
ylabel('|H(jw)|');
axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
set(gca,'YTickMode','manual','YTick',[0AtnRip1]);
grid
subplot(2,1,2);
plot(w/pi,pha/pi);
title('相频特性');
xlabel('w(/pi)');
ylabel('pha(/pi)');
axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[00.20.30.51]);
grid
波形如下图所示:
(二)实验结果比对
1、双线性变换法的优缺点:
双线性变换法的主要优点是消除了冲激响应不变法所固有的混叠误差,这是由于S平面的整个jΩ 轴单值地对应于Z平面上的单位圆一周的缘故。
数字频率ω与模拟频率Ω的关系为:
ω=
。
有图可见,在零频附近,模拟频率Ω与数字频率ω的关系接近于线性,T值越小,采样频率越高,则线性关系的频率范围越大。
当Ω进一步增大时,ω增长变慢,二者不再是线性关系了,最后当Ω→∞,ω终止在折叠频率ω=π处,从而双线性变换法不会出现由于高频部分超过折叠频率而混叠到低频部分失去的现象。
这就意味着,模拟滤波器全部频率响应特性被压缩于等效的数字频率范围0<Ω<π。
可见,双线性变换消除混叠的这个特点是靠频率的严重飞线性而得到的。
双线性变换法的确定是频率Ω与ω间的非线性,这种非线性要求被变化的连续时间系统的幅度响应必须是分段常熟型的(某一段频率范围幅度响应应接近于某一常数),不然所映射出的数字频率响应相对于原来的模拟频率响应会产生变形。
例如,双线性变换法不能将模拟微分器变化成数字微分器,但对于低通模拟滤波器、高通模拟滤波器、带同模拟滤波器和带阻滤波器,频率响应都是分段常数型的,可采用双线性变换法,仍得到频率响应分为分段常数的滤波器,但各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以纠正。
2、冲激响应不变法的优点:
具有线性相位特性的模拟器,经冲激响应不变法变换为数字滤波器后,该数字滤波器一定具有线性相位特性,频率的线性关系是冲击响应不变法的一个优点。
另一个优点是时域逼近良好,模拟频率和数字频率之间呈线性关系。
缺点:
其最大的缺点是存在频率响应的混叠失真,所以冲击响应不变法只适用于限带的模拟滤波器,所以高通和带阻滤波器不宜采用冲激响应不变法,否则要加保护滤波器,滤掉高于折叠频率以上的频率。
三种滤波器说明
巴特沃思滤波器的频率特性无论在通带或阻带内都随频率变化而单调变化,因而如果在通带边缘满足指标,则在阻带内一定会有量,也就会超过指标的要求,因而并不经济,所以最有效的办法是将指标的精度均匀地分布在通带内,或均匀的分布在阻带内,或同时均匀地分布在通带和阻带内,这时就可设计出阶数较低的滤波器,这种精度均匀分布的办法可通过选择均有等波纹特性的逼近函数来完成。
切比雪夫滤波器的幅度特性就在以个频带内(通带或阻带)具有这种等级纹波特性:
一种是在通带中是等纹波的,在阻带内是单调的,称为切比雪夫Ⅰ型。
一种是在通带内是单调的,在阻带内是等纹波的,称为切比雪夫Ⅱ型。
五、体会
本次设计使用了滤波器设计中的两种最基本的方法:
冲激响应不变法和双线性变换法。
滤波器设计原理来比较简单,在MATLAB中有专门的函数可用来调用,实现滤波器的。
由于对MATLAB遗忘了很多,甚至连基本的函数语句都得查书才能知道,这就大大增加了我们设计的时间。
有时在调用函数时出现各种错误,得不到正确结果,程序运行时也会有很多的错误。
这让我深深体会到,要想正确得出一个波形,需要花很多的时间和很大精力。
个人感觉滤波器的设计比较难,而且设计内容庞大,使得时间非常紧张。
不过收获特别大,在不断错误的过程中,我学到了新的知识,同时也磨练了自己的意志。
做完本设计,我对低通数字滤波器的原理和设计方法有了更深层次的理解和掌握,对数字滤波器这方面有了系统的理解,收获颇多。
六、参考文献
[1]程佩青.数字信号处理教程.清华大学出版社(第三版),2007.2
[2]张志涌.精通matlab6.5版.北京航天航空大学出版社,2003
[3]刘卫国.MATLAB程序设计教程.中国水利水电出版书,2005
[4]余成波.数字信号处理及其MATLAB实现.清华大学出版社,1995