基于MATLAB的IIR滤波器的设计及实现.docx
- 文档编号:26944982
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:19
- 大小:383.12KB
基于MATLAB的IIR滤波器的设计及实现.docx
《基于MATLAB的IIR滤波器的设计及实现.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的IIR滤波器的设计及实现.docx(19页珍藏版)》请在冰豆网上搜索。
基于MATLAB的IIR滤波器的设计及实现
毕业论文设计
题目基于MATLAB的IIR滤波器的设计及实现
专业名称电子信息工程
学生姓名张涛
指导老师姜恩华
完成时间
目录
摘要
前言
第一章数字滤波器
第一节数字滤波器的介绍
第二节数字滤波器的分类
第二章IIR滤波器的设计
第一节IIR滤波器的简介
第二节IIR滤波器的设计方法
第三章MATLAB实现IIR滤波器
第一节MATLAB的介绍
第二节IIR滤波器的模拟原型设计
第三节IIR滤波器MATLAB的直接设计法
总结
致谢
摘要
在当今时代的通信系统中,由于传输的信号中常常混有各种噪声和干扰,所以许多信号都是基于滤波器来分析进行的。
而数字滤波器是通过数值运算实现滤波,具有稳定、灵活、处理精度高、不存在阻抗匹配问题等优点,可以实现模拟滤波器无法实现的一些特殊滤波功能。
数字滤波器是根据其冲激响应函数的时域特性,可分为无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器两种。
这能实现IIR滤波器的阶次较低、所用存储单元少、效率高。
精度高,同时还能保留模拟滤波器的一些优良特性,因此所应用范围很广。
本文主要介绍无限长冲激响应(IIR)滤波器的的原理,设计思路和设计方法,并且在Matlab环境下的IIR滤波器的实现和仿真。
前言
随着时代的发展,信息技术也在迅猛发展。
数字信号处理已经成为如今极其重要的一门科学技术,在通信、语音、航天事业、雷达、家庭电器等多个方面得到应用。
在数字信号处理过程中广泛运用的是数字滤波器,数字滤波器是根据其单位冲激响应函数的时域,可分为IIR滤波器和FIR滤波器。
其基本工作原理是利用离散系统特性对系统输入信号进行加工和变换,改变输入信号的波形,分离出有用的频率信号通过,对无用的信号分量进行输出。
IIR滤波器具有反馈,一般认为具有无限的脉冲响应,且为非线性相位(双线性变换法),并且会对非线性相位造成影响。
IIR滤波器的实现是采用递归结构,极点必须在单位圆内,所需阶次低、精度和效率高,所用单元少,因此经济效益好,被广泛应用于各领域。
第一章数字滤波器
第一节数字滤波器的介绍
数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。
数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
数字滤波器一词出现在60年代中期。
由于电子计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现,也可用大规模集成数字硬件实时实现。
数字滤波器是一个离散时间系统,其输入、输出都是数字的信号。
它的基本工作原理就是利用离散系统特性对输入的信号改变和转换,分离出有用频率的信号并通过,阻碍无用信号的输出。
数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成
、体积小、灵活、不要求阻抗匹配等优点,由于其经济效益高,已被广泛用于语音、图像、雷达等多个方面。
时域离散系统的频域特性
用公式表示
Y(ejw)=X(ejw)H(ejw)
式中Y(ejw)、X(ejw)分别表示滤波器输出序列和输入序列的频域特性,H(ejw)表示滤波器的单位取样响应的频谱。
第二节数字滤波器的分类
数字滤波器按不同方法来分,有许多种类。
按照所处理信号可分为模拟滤波器和数字滤波器。
按照所通过信号的频段可分为低通、高通、带通、带阻和全通等类型。
它可以是时变的或时不变的、因果的或非因果的、线性的或非线性的。
如果数字滤波器的内部参数不随时间而变化,则称为时不变的,否则为时变的。
如果数字滤波器在某一给定时刻的响应与在此时刻以后的激励无关,则称为因果的,否则为非因果的。
如果数字滤波器对单一或多个激励信号的响应满足线性条件,则称为线性的,否则为非线性的。
应用最广的是线性、时不变数字滤波器。
低通、高通、带通、带阻的各种理想幅频特性
低通滤波器:
它允许低频或直流分量通过,抑制高频、干扰信号和噪声。
高通滤波器:
它允许信号中高频信号通过,抑制低频或直流分量。
带通滤波器:
它允许一定频段的信号通过,抑制低于或者高于该频段的信号。
带阻滤波器:
它抑制一定频段内的信号,允许该频段外的信号通过。
第二章IIR滤波器的设计
第一节IIR滤波器的简介
IIR滤波器即无限长脉冲响应滤波器,它具有反馈,一般认为有无限长脉冲响应。
IIR滤波器在数字信号处理中发挥重要的作用。
它的优点是可以利用模拟滤波器设计的结果,然后用双线性变换法或者脉冲响应不变法来把模拟滤波器转换成数字滤波器。
IIR滤波器的优点:
(1)单位脉冲响应h(n)是无限长的。
(2)IIR滤波器的系统函数可以写成封闭函数的形式。
(3)它采用递归结构,即结构上有反馈环路,其运算结构通常由延时、乘以系数和相加减等运算组成,可以组成直接型、正准型、级联型和并联型四种结构,都具有反馈电路。
(4)IIR滤波器可以利用模拟滤波器的结果,如巴特沃斯、切比雪夫和椭圆滤波器等,其工作量比较小,对计算工具要求不高。
(5)IIR滤波器的相位特性不好,需要加相位校准网络。
第二节IIR数字滤波器的设计方法
实现IIR滤波器的方法主要有两种:
一是利用模拟滤波器的设计方法来实现。
其主要步骤是先依据参数指标设计出模拟滤波器,然后再用转换方法转换成数字滤波器,从而决定数字滤波器的参数。
因为模拟滤波器的技术现在已经很成熟,所以这种方法既好实现有比较方便简洁。
另一种是直接在频域或者在时域中进行,由于要解联立方程,所以这需要计算机做辅助设计。
其设计过程是先设计一个相应的模拟滤波器得到其系统函数为Ha(s),然后将函数依照某种方法转换成数字滤波器的系统函数H(z)。
IIR滤波器的重大缺点在于,存在反馈稳定性不能得到保证的缺点。
从模拟滤波器到数字滤波器的设计过程是:
(1)首先要确定模拟滤波器的各个重要参数指标如:
通带边界频率w、通带最大衰减a、阻带截止频率、阻带最小衰减。
(2)将数字滤波器的技术指标转换成相应的模拟滤波器的技术指标。
(3)依据转换来的参数指标设计出一个临时的模拟滤波器。
(4)最后用所选方法将模拟滤波器的系统函数Ha(s)转换成数字滤波器的系统函数H(z)。
整个设计过程的流程图如下:
在转换过程中要保证满足技术指标的要求,需要:
(1)因果稳定的模拟滤波器转换后的数字滤波器,也是因果稳定的。
(2)数字滤波器的频率响应模仿模拟滤波器的频响特性,s平面的虚轴映射为z平面上的单位圆,相应频率之间是线性关系。
第三节IIR滤波器的设计过程
1、用脉冲响应不变法设计
IIR滤波器的Z域系统函数可写成
则模拟滤波器的系统函数可写成
即就是将H(S)转变为H(Z).
脉冲响应不变法是从滤波器的脉冲响应特点出发的,在模拟滤波器的单位脉冲响应序列ha(t)上,进行等间隔采样,使得数字滤波器单位脉冲响应序列h(n)等于其的采样值,即h(n)=ha(nT),式中T是采样周期。
如果采用拉普拉斯变换方法,H(z)是h(n)的Z变换,可以得到以下的关系式:
这样模拟滤波器的S平面被转换为数字滤波器的Z的平面。
从S平面到Z平面的转换关系式为z=eSt。
相应的映射转换关系图如下:
模拟滤波器与数字滤波器的频率响应关系式是
利用脉冲响应不变法设计IIR滤波器时,因为从S平面到Z平面是多值的映射关系,这使得会产生频率响应的混叠失真。
只有当模拟滤波器的频率响应是限带时,且带限在折叠频率之内时,即
才能使数字滤波器的带限在折叠频率之内,而不产生混叠失真。
可得:
产生频响混叠现象如下图表示
然而,没有一个模拟滤波器频率响应都采用限带的,因此只有当模拟滤波器的频率响应在折叠频率以上处于衰减越大、越快时,产生的混叠失真才会越小,这时采用脉冲响应不变法设计出来的数字滤波器的效果是最佳的。
2.用双线性变换法设计滤波器
由于脉冲响应不变法存在产生频率响应混叠失真的缺点,因此,我们可以用双线性变换法来设计。
双线性变换法采用非线性频率压缩方法,将整个的频率压缩在-∏/T到∏/T之间,在利用z=esT公式进行变换。
即把S平面压缩映射到S1平面-∏/T到∏/T上,形成一条横带,再通过转换关系式把此横带转换到Z平面上来。
这样使得S平面和Z平面就形成了一对一的单值对应关系,不会再产生频率响应混叠失真的现象,映射关系图如下:
为了实现从S平面到S1平面上的转换,可以利用公式
式中,T是采样周期
因为Ω是从-∞到0再到+∞,即映射了整个jΩ轴可以得到公式
可令jΩ=s,jΩ1=s1,则可得到公式
根据S1平面到Z平面上的转换关系式z=esT,从而可得到S平面到Z平面之间的单值对应关系式
s=
.
z=
s=
这种变换都是两个线性函数之比,因此称为双线性变换法。
利用双线性变换法需要满足两点条件,一是S平面内的虚轴必须映射到Z平面的单位圆,即
S=
=jΩ
二是S平面的左半平面映射到Z平面的单位圆内,S平面的又半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
采用双线性变换法不会产生频率响应混叠失真现象,但是会产生频率的畸形,导致数字滤波器的频率响应与预先设计出的模拟滤波器的频率响应有偏差。
在各个分段边缘产生的频率畸形,可以通过频率的预畸变来加以校正,也就是将临界模拟频率事先加以畸变,然后经转换后正好映射到所需要的数字频率上去。
双线性变换法幅度与相位特性的非线性映射图如下:
双线性变换法将S平面和Z平面形成一对一的单值对应关系,消除了多值变换性,即消除了频率响应的混叠现象,所以稳定的模拟滤波器经过双线性变换法后可以得到一样稳定的数字滤波器。
第三章MATLAB实现IIR滤波器
第一节MATLAB软件的介绍
MATLAB是matrix&laboratory两个英文词组合的,意思是矩阵工厂,也称作是矩阵实验室,它的基本单位是矩阵.它是有美国公司发布的,主要用于对科学计算、可视化和交互式程序设计的高科技计算软件。
MATLAB软件的功能十分强大,它的主要功能是数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理、通信系统设计与仿真和财务与金融工程。
由于其指令表达式与数学、工程中常用形式十分相似,所以用MATLAB来解决问题比C、FORTRAN等语言解决问题方便简洁的多,而且MATLAB吸收了许多软件的优点,使其已成为一个功能强大的软件系统。
MARLAB软件将数值分析、矩阵运算、科学数据可视化等许多强大的功能实现在一个可以易于使用的视窗环境下,为科学研究、工程设计等众多方面提供了一种全面的解决方案,在很大程度上改变了原有的非交互式程序设计的编辑模式。
MATLAB已经成为各个领域的先进水平的计算软件,它的特点主要有
(1)编程效率高由于其语言能通俗易懂、编写简单可以高效率的转换成科学算法语言。
(2)用户使用方便MATLAB语言把编辑、编译、连接和执行融为了一体,用户可花少量的时间学习,对于错误的语法、语意可以快速修改,加快了用户的编写。
(3)扩充能力强在MATLAB软件中含有丰富的库函数,可以供用户直接调用,由于其库函数同用户在形式上一样,因此用户可以根据自己需求来编写函数,扩充自己的库函数。
(4)语言简单、内容丰富
(5)高效方便的矩阵运算他具有一系列运算符,不需用户定义数组维数,就给出矩阵函数,显得快捷方便、高效率
(6)简洁方便的绘图功能它有一系列的绘图函数,绘图时用户只需要直接调用各种不同的函数。
(7)既有结构化的控制语句,又有面向对象编程特点。
MATLAB由于不用编译预处理,也不生成可执行文件,程序为解释执行,所以其存在程序运行的速度较慢的缺点。
用MATLAB设计IIR滤波器的一般步骤是:
1、将所需要设计的数字滤波器的各参数指标转换为模拟滤波器的参数指标。
2、依据转换的参数指标选择函数,并确定最小阶数N和固有频率Wn。
可选用的函数:
buttord、cheb1ord、cheb2ord、ellipord等。
3、运用最小阶数N产生模拟滤波器原型。
其创建函数有:
buttap、cheb1ap、cheb2ap、ellipap等
4、根据2中的固有频率Wn,把模拟低通滤波原型转换为模拟低通、高通、带通、带阻滤波器,分别用函数lp21p、lp2hp、lp2bp和lp2bs。
5、用脉冲响应不变法或者双线性变换法将模拟滤波器转换成数字滤波器,分别调用的函数是:
impinvar和bilinear。
根据不同要求利用不同的转换方法。
第二节IIR滤波器的模拟原型设计
设计一个巴特沃斯数字低通滤波器,要求通带边界频率fp=2100Hz,通带最大衰减Rp=0.5dB,阻带边界频率fs=8000Hz,阻带最小衰减Rs=30dB,采样频率为Fs=20000Hz。
由于一般设计过程比较繁琐复杂,计算容易出错,所以直接用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]=buttrod(W1p,W1s,Rp,Rs,’s’);
[z,p,k]=buttap(N);
[bp,ap]=2p2tf(2,p,k);
[bs,as]=lp2lp(bp,ap,Wn*pi*Fs);
[bz,az]=impinvar(bs,as,Fs);
Sys=tf(bz,az,T);
[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(‘振幅/H’);
得到波形如下:
得结果为:
N=4
bz=0.00000.09990.19140.0252
az=1.0000-1.43361.0984-0.41150.0627
通过这种方法很容易得到结果。
用双线性变换法来实现椭圆数字低通滤波器
给定通带边界频率fp=2100Hz,通带最大衰减Rp=0.5dB,阻带边界频率fs=8000Hz,阻带最小衰减Rs=30dB,采样频率Fs=20000Hz。
用双线性变换法实现椭圆数字滤波器的编写程序:
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);
[N,Wn]=ellipord(Wp,Ws,Rp,Rs,’S’);
[z,p,k]=ellipap(N,Rp,Rs);
[Bap,Aap]=zp2tf(2,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)));
title(‘N=2频率响应’);
gridon;
xlabel(‘频率/Hz’);
ylabel(‘振幅/dB’);
subplot(2,1,2);
plot(f,abs(H));
gridon;
xlabel(‘频率/Hz’);
ylabel(‘振幅/H’);
可得到运行波形如下:
N=2
bz=0.12130.16620.1213
az=1.0000-0.98890.4218
第三节IIR滤波器MATLAB的直接设计法
MATLAB软件中由于含有大量的库函数可以供用户直接调用,所以MATLAB还能提供滤波器的直接设计方法,这种方法十分的方便。
主要集中方法是:
1、零极点累试法
这种方法在确定极点时要注意
(1)极点必须要在Z平面的单位圆内,以保证滤波器的因果稳定性。
(2)复数零极点必须共轭成对,保证系统函数有理式的系数是实的。
2、在频域利用幅度平方误差最小法直接设计IIR数字滤波器。
3.在时域直接设计IIR数字滤波器。
设计巴特沃斯滤波器可以用butter()函数,低通、高通、带通和阻带的数字滤波器,它的特性是通带内的幅度响应最大限度的平滑,但会损失截止频率处的下降斜度。
设计切比雪夫I型滤波器可以用cheby1()函数,切比雪夫II型滤波器可用cheby2()函数,他们都可以设计低通、带通、高通和带阻滤波器。
其不同在于I型滤波器的通带内为等波纹,阻带内为单调,II型为阻带内是等波纹,通带内是单调。
切比雪夫I滤波器下降斜度比切比雪夫II型滤波器下降斜度要大,其通带内波纹较大,而II型滤波器阻带内波纹较大。
如设计一个8阶的巴特沃斯低通滤波器,给定截止频率fs=300Hz,采样频率Fs=1000Hz,编写运行程序是:
fs=1000;
n=10;
Wn=300*2/fs;
[b,a]=butter(n,Wn,’low’);
m=256;
freqz(b,a,m,fs);
得到图形
用MATLAB可以方便,简单的设计出各种滤波器,我们只需编写运行程序就能简洁清楚的得到结果,达到相应滤波器要求的性能指标。
在脉冲响应不变法设计滤波器时相位有严格的线性,不存在稳定性的问题,设计方法简便,但是存在频率响应的混叠现象。
在双线性变换法设计滤波器时,不会有频率响应混叠现象,但是其频率会产生畸形,使得数字滤波器的频率响应与模拟滤波器的频率响应产生偏差。
在MATLAB环境时设计滤波器,由于其含有大量的库函数可以直接调用,所以设计数字滤波器时简单方便,容易实现。
通过这次对IIR滤波器的设计,我学到了不仅可以用脉冲响应不变法和双线性变换法来设计IIR滤波器,还能用MATLAB软件来设计实现,而且其方法更加简单方便。
对数字滤波器的设计时,熟悉了MATLAB的特点,掌握了在MATLAB中对一些库函数的基本调用和编写基本的运行程序,利用MATLAB强大的运算功能可快速,简洁的设计出所需求的数字滤波器很大程度上减轻了我们的工作量,也更加了解脉冲响应不变法和双线性变换法设计滤波器的原理。
经过此次的滤波器设计,使我们把理论和实际结合到了一起,完善了我们以前在课本中理论学习的不足。
致谢
在本次毕业论文设计过程中,感谢姜老师的悉心指导,对我的耐心教诲,使我完成毕业论文。
从中我学到了以前没接触过的知识,以及在以后实际工作中的宝贵经验。
再次感谢姜老师的指导和支持,致以诚挚的谢意和崇高的敬意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB IIR 滤波器 设计 实现