IIR数字滤波器的设计.docx
《IIR数字滤波器的设计.docx》由会员分享,可在线阅读,更多相关《IIR数字滤波器的设计.docx(13页珍藏版)》请在冰豆网上搜索。
![IIR数字滤波器的设计.docx](https://file1.bdocx.com/fileroot1/2023-6/18/f6034035-d28c-4b58-abee-50fab1cc4b41/f6034035-d28c-4b58-abee-50fab1cc4b411.gif)
IIR数字滤波器的设计
数字信号处理课程设计报告
题目:
IIR数字滤波器的设计
学院:
化工过程自动化学院
专业班级:
学号:
姓名:
指导教师:
起止日期:
2015年6月22日~2015年6月28日
1、课程设计的意义与任务要求
1.1课程设计的意义
数字滤波器是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。
它的基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入序列的频谱或信号波形,让有用频率的信号分量输出。
数字滤波器和模拟滤波器有着相同的滤波概念,根据其频率响应特性可分为低通、高通、带通、带阻等类型,与模拟滤波器相比,数字滤波器除了具有数字信号处理的固有优点外,还有滤波精度高、稳定性好、、灵活性强等优点。
1.2课程设计的任务要求
(1)熟悉用脉冲响应不变法和双线性变换法设计IIR数字滤波器的原理与方法;
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数设计IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
2、课程设计的理论基础
利用MATLAB信号处理工具箱中的滤波器设计和分析工具(FDATool)可以很方便地设计出符合应用要求的未经量化的IIR数字滤波器。
需要将MATLAB设计出的IIR数字滤波器进一步分解和量化,从而获得可用FPGA实现的滤波器系数。
IIR数字滤波器的设计方法有两类:
间接设计法和直接设计法。
间接设计法是借助模拟滤波器设计方法进行设计的,先根据数字滤波器设计指标设计相应的过渡模拟滤波器,再将过渡模拟滤波器转换为数字滤波器。
直接设计法师在时域或频域直接设计数字滤波器。
由于模拟滤波器设计理论非常成熟,而且有很多性能优良的典型滤波器可供选择(如,巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器等),设计公式和图表完善,而且许多实际应用需要模拟滤波器的数字仿真,所以间接设计法得到广泛的应用。
而直接设计法要求解联立方程组,必须采用计算机辅助设计。
在计算机普及的今天,各种设计方法都有现成的设计程序(或设计函数)可供调用,例如利用MATLAB仿真平台,可以设计不同类型的IIR滤波器。
2.1数字滤波器简介
数字滤波器是一种用来过滤时间离散信号的数学系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。
如果系统是一个连续系统,则滤波器称为模拟滤波器。
如果系统是一个离散系统,则滤波器称为数字滤波器。
数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号(对应数字频率)转换为所要求的输出离散时间信号的特定功能装置)。
应用数字滤波器处理模拟信号(对应模拟频率)时,首先须对输入模拟信号进行限带、抽样和模数转换。
数字滤波器输入信号的数字频率(2π*f/fs,f为模拟信号的频率,fs为采样频率,注意区别于模拟频率),按照奈奎斯特抽样定理,要使抽样信号的频谱不产生重叠,应小于折叠频率(ws/2=π),其频率响应具有以2π为间隔的周期重复特性,且以折叠频率即ω=π点对称。
为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。
数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。
数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。
2.2IIR数字滤波器的设计原理
IIR数字滤波器的最通用的方法是借助于模拟滤波器的设计方法。
模拟滤波器设计已经有了相当成熟的技术和方法,有完整的设计公式,还有比较完整的图表可以查询,因此设计数字滤波器可以充分利用这些丰富的资源来进行。
对于IIR数字滤波器的设计具体步骤如下:
(1)按照一定的规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。
(2)根据转换后的技术指标设计模拟低通滤波器G(s)(G(s)是低通滤波器的传递函数)。
(3)再按照一定的规则将G(s)转换成H(z)(H(z)是数字滤波器的传递函数)。
若设计的数字滤波器是低通的,上述的过程可以结束,若设计的是高通、带通或者是带阻滤波器,那么还需要下面的步骤:
将高通、带通或带阻数字滤波器的技术指标转换为低通模拟滤波器的技术指标,然后设计出低通G(s),再将G(s)转换为H(z)。
2.3IIR数字滤波器的特点
(1)IIR数字滤波器的系统函数可以写成封闭函数的形式。
(2)IIR数字滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
(3)IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
(4)IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。
3、关于MATLAB软件
3.1MATLAB软件介绍
MATLAB(矩阵实验室)是MATrixLABoratory的缩写,是一款由美国TheMathWorks公司出品的商业数学软件。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。
[1]
MATLAB不仅在数值运算上继续保持着相对其他同类软件的绝对优势,而且还开发了自己的符号运算功能。
用户只要学会了MATLAB就可以方便解决诸如矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、统计及优化等问题。
而且MATLAB能发展到今天,其可扩充性和可开发性起着不可估量的作用。
MATLAB本身就像一个解释系统,对其中的函数程序的执行以一种解释执行的方式进行,其最大好处是MATLAB完全成了一个开放的系统,用户可以方便的与FORTRAN、C等语言进行连接,以充分利用各种资源。
用户只需将已有的EXE文件转换成MEX文件,就可以方便地调用有关程序和子程序。
3.2MATLAB应用领域
MATLAB是一种应用于科学计算领域的高级语言,它的主要功能包括数值计算和符号计算功能、绘图功能、编程语言及应用工具箱。
尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。
另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
[2]
MATLAB是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
[3]
3.3MATLAB相关语句
convert转换量化滤波器的结构
copyobj*为量化器、量化滤波器或量化FFT创建一个独立的复制品
disp*显示量化器、量化滤波器或量化FFT
eps*返回量化器、量化滤波器或量化FFT的量化阶数
filter*将一量化滤波器应用于数据,可访问状态和滤波信息
freqz*计算量化滤波器的频响特性
get*返回量化器、量化滤波器或量化FFT的属性
impz*计算量化滤波器的单位冲激响应
isallpass测试量化滤波器是否为全通特性
isfir测试是否为FIR滤波器islinphase测试是否为线性相位
noperations*量化器、量化滤波器或量化FFT的量化操作次数
noverflows*返回最后一次FFT或IFFT运算的溢出次数
qfft量化FFT
qreport*显示应用量化器、量化滤波器或量化FFT的结果
quantizer*构建一个量化器
range*返回量化器的数值范围
reset*将一个或多个量化器、量化滤波器或量化FFT复位
setbits*将量化器、量化滤波器或量化FFT的数据设置为Format形式
4、设计的具体内容
4.1数字滤波器设计步骤
用MATLAB进行模拟原型的数字滤波器的设计,一般步骤如下:
(1)按一定规则将给出的数字滤波器的技术指标转换成模拟低通滤波器的技术指标。
(2)根据转换后的技术指标使用滤波器阶数选择函数,确定最小阶数N和固有频率Wn,根据选用的模拟低通滤波器的类型可分为:
buttord,cheblord,cheb2ord,ellipord等函数;
(3)运用最小阶数N产生模拟滤波器原型,模拟低通滤波器的创建函数有:
buttap,cheb1ap,cheb2ap,ellipap,besselap等;
(4)运用固有频率Wn把模拟滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可分别用函数lp2lp,lp2hp,lp2bp,lp2bs;
(5)运用脉冲响应不变法和双线性不变法把模拟滤波器转换成数字滤波器,分别用函数impinva和bilinear来实现。
低通Chebyshevl型数字滤波器的设计:
设计中需要限定其通带上限临界频率Wp,阻带临界滤波频率Ws,在通带内的最大衰减Rp,阻带内的最小衰减Rs。
[4]
4.2脉冲响应不变法和双线性变换法的变换原理与步骤
4.2.1脉冲响应不变法的变换原理与步骤
设计巴特沃斯低通滤波器,要求通带边界频率fp=2.1KHZ,通带最大衰减Rp=0.5dB;阻带边界频率fs=8KHZ,阻带最小衰减Rs=30dB,采样频率为Fs=20KHZ。
从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应模仿模拟滤波器的冲击响应,即h(n)是ha(t)的采样值。
设T为采样周期,变换过程:
如果模拟滤波器的系统函数只有单阶极点,且分母的阶数高于分子阶数,用脉冲响应不变法求数字滤波器的系统函数有简便方法:
将Ha(s)展成部分分式的并联形式,再利用下述变换公式直接写出H(z)
4.2.2双线性变换法的变换原理和步骤[5]
(1)保证s平面压缩到s1平面的宽为2π/T的横带内
(2)保证低频部分基本对应
根据要求,确定数字滤波器指标。
如是模拟频率临界点,则要先转变成数字频率,以便预畸变处理。
将数字指标转换成与Ha(s)对应的模拟性能指标。
设计模拟滤波器的系统函数Ha(s)。
将映射关系代入Ha(s)中得数字滤波器系统函数H(z)。
由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理。
设采样频率为Fs,归一化频率的计算公式是:
4.3实验步骤及运行程序
一、利用典型法设计数字滤波器的步骤:
1、将设计指标归一化处理。
如果采用双线性变换法,还需进行预畸变。
2、根据归一化频率,确定最小阶数N和频率参数Wn。
可供选用的阶数选择函数有:
buttord,cheblord,cheb2ord,ellipord等。
3、运用最小阶数N设计模拟低通滤波器原型。
模拟低通滤波器的创建函数有:
buttap,cheblap,cheb2ap,ellipap和besselap,这些函数输出的是零极点增益形式,还要用zp2tf函数转换成分子分母多项式形式。
如果想根据最小阶数直接设计模拟低通滤波器原型,可用butter,chebyl,cheby2,ellip,bessel等函数,只是注意要将函数中的Wn设为1。
4、根据第2步的频率参数Wn,将模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器,可用函数分别是:
lp21p,lp2hp,lp2bp,lp2bs。
5、运用脉冲响应不变法或双线性变换法把模拟滤波器转换成数字滤波器,调用的函数是impinvar和bilinear。
脉冲响应不变法适用于采样频率大于4倍截止频率的锐截止低通带通滤波器,而双线性变换法适合于相位特性要求不高的各型滤波器。
6、根据输出的分子分母系数,用tf函数生成H(z)的表达式,再用freqz函数验证设计结果。
用冲激响应不变法设计的巴特沃斯数字低通滤波器的M程序如下:
fp=2100;
fs=8000;
Fs=20000;
Rp=0.5;Rs=30;
T=1/Fs;%设计指标
W1p=fp/Fs*2;
W1s=fs/Fs*2;%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'s');
%确定butterworth的最小介数N和频率参数Wn
[z,p,k]=buttap(N);%设计模拟低通原型的零极点增益参数
[bp,ap]=zp2tf(z,p,k);%将零极点增益转换成分子分母参数
[bs,as]=lp2lp(bp,ap,Wn*pi*Fs);%将低通原型转换为模拟低通
[bz,az]=impinvar(bs,as,Fs);%用脉冲响应不变法进行模数转换
sys=tf(bz,az,T);%给出传递函数H(z)
[H,W]=freqz(bz,az,512,Fs);%生成频率响应参数
subplot(2,1,1);
plot(W,20*log10(abs(H)));%绘制幅频响应
gridon;%加坐标网格
xlabel('频率/Hz');
ylabel('振幅/dB');
subplot(2,1,2);
plot(W,abs(H));gridon;
xlabel('频率/Hz');
ylabel('振幅/dB');
运行后的波形如下
运行结果:
N=4
bz=0.00000.09990.19140.0252
az=1.0000-1.43361.0984-0.41150.0627
可以看出:
通过编程,结果十分直观,题目中要求的通带边界频fp=2.1KHZ,通带最大衰减Rp=0.5dB;阻带边界频率fs=8KHZ,阻带最小衰减Rs=30dB,采样频率为Fs=20KHZ,等设计指标都达到,滤波器设计符合要求。
二、用双线性变换法设计椭圆数字低通滤波器的M程序如下:
fs=20000;
wp=2*pi*2100/fs;
ws=2*pi*8000/fs;
Rp=0.5;
Rs=30;
Ts=1/fs;
Wp=2/Ts*tan(wp/2);Ws=2/Ts*tan(ws/2);
[N,Wn]=ellipord(Wp,Ws,Rp,Rs,'s');
[z,p,k]=ellipap(N,Rp,Rs);
[Bap,Aap]=zp2tf(z,p,k);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,fs);
[H,f]=freqz(bz,az,512,fs);
subplot(2,1,1);
plot(f,20*log10(abs(H)));
gridon;
xlabel('频率/Hz');
ylabel('振幅/dB');
subplot(2,1,2);
plot(f,abs(H));gridon;
xlabel('频率/Hz');
ylabel('振幅/dB');
运行结果
N=2
bz=0.12130.16620.1213
az=1.0000-0.98890.4218
可以看出,滤波器的参数均符合设计要求,设计是成功的。
同时了解到,椭圆数字滤波器的降斜度比较大,通带和阻带均为等波纹,同样的性能指标,椭圆滤波器可以用更低的阶数来实现。
5、课程设计的总结与心得
利用模拟滤波器设计数字滤波器,就是将设计的模拟滤波器系统函数Ha(s)变换成数字滤波器系统函数H(z)。
脉冲响应不变法,会产生频谱混叠。
由于脉冲响应是冲激响应的采样,要求模拟滤波器的频谱限带小于折叠频率。
实际的滤波器不可能是严格限带,所以设计的数字滤波器不可避免地会产生混叠失真。
该法只适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。
频率坐标变换是线性的,即ω=ΩT,如果不考虑频谱混叠现象,该法设计的数字滤波器能很好地重现原模拟滤波器的频率特性。
数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好。
双线性变换法,解决了脉冲响应不变法的混叠失真问题。
它是一种简单的代数映射关系,设计十分方便。
从S平面的Ω到Z平面的ω的映射是非线性关系(因S→S1平面的频率映射非线性),带来了频率和相位失真。
S1平面边缘的临界频率点与S平面的频率点不同,需要通过频率预畸加以校正。
要求模拟滤波器的幅频响应是分段常数型(一般滤波器均满足)。
不适于设计线性相位数字滤波器。
参考书目
[1]楼顺天,李博苗,基于MATLAB的系统分析与设计-信号处理。
西安:
西安电子科技大学出版社,1958
[2]施阳,MATLAB语言工具箱,西安:
西北工业大学出版社,1999
[3]吴湘淇、肖熙、郝晓莉,信号系统与信号处理的软硬件实现,北京:
电子工业出版社,2003
[4]张葛祥、李娜,MATLAB仿真技术与应用,北京:
清华大学出版社,2003
[5]陈桂明,应用MATLAB语言处理数字信号与数字图像,北京:
科学出版社,2001
《数字信号处理》课程设计指导教师评语
评语:
指导教师:
(签字)
年月日