matlab在信号与图像处理中的应用第6章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第6章数字滤波器设计与实现在上一章中,已经对MATLAB信号处理的一些基本知识作了详细介绍,在此基础上,本章将重点介绍在MATLAB中如何按照指定要求设计并实现一个数字滤波器。这里所谓的滤波器设计是根据特定的任务需求确定一组滤波器系数的过程,而滤波器实现则涉及选取滤波器结构并将结构与滤波器系数相结合的过程。只有完成了这两个步骤,含噪声的信号才能够进行有效的滤波处理。.数字滤波器可以分为两种类型,即无限长单位冲激响应(IIR)滤波器和有限长单位冲激(FIR)响应滤波器。在本章中,将分别介绍IIR和FIR数字滤波器设计的原理及方法,并运用大量实例说明在MATLAB中如何设计并实现数字滤波器。熟悉数字滤波器的设计及实现步骤掌握IIR滤波器的设计方法掌握FIR滤波器的设计方法了解IIR和FIR滤波器的区别与优缺点对比设计两个Butterworth滤波器,并采用直接Ⅱ型结构实现对数据x的滤波,要求分别利用函数dfilt和filter。设计两个10阶高通Butterworth滤波器,要求截止频率为200Hz和300Hz,给定采样频率1000Hz。设计一个8阶带通和一个8阶带阻Butterworth滤波器,要求通带频率为200Hz到300Hz,阻带频率为200Hz到300Hz,给定采样频率1000Hz。设计一个8阶低通ChebyshevⅠ型滤波器,一个8阶高通ChebyshevⅡ型滤波器,要求通带波纹1dB,阻带衰减20dB,截止频率300Hz,定采样频率1000Hz。设计一个8阶低通椭圆滤波器,要求阻带衰减40dB,通带波纹3dB,截止频率300Hz,给定采样频率1000Hz。设计一个低通ChebyshevⅠ型滤波器,要求阻带衰减至少50dB,通带波纹小于3dB,通带截止频率200Hz,阻带截止频率300Hz,给定采样频率1000Hz。采用冲激响应不变法和双线性变换法将一个模拟低通滤波器变换为数字滤波器,采样频率10Hz。学学习习目目标标练练习习案案例例第6章数字滤波器设计与实现2利用冲激响应不变法和双线性变换法各设计一个Butterworth低通数字滤波器,要求通带范围200Hz以下,阻带范围300Hz以上,通带波纹Rp小于3dB,阻带衰减Rs大于20dB,采样频率1kHz。利用直接设计法设计一个8阶低通滤波器,并绘出期望频响与实际频响的图形。根据Butterworth滤波器的冲击响应,恢复滤波系数。设计一个48阶的FIR带通滤波器,要求通带55.025.0设计一个25阶FIR低通滤波器,给定频率向量f=[00.60.61],幅值向量m=[1100],绘出期望响应与实际响应的对比图。利用频率取样法设计FIR高通滤波器,要求截止频率3/4πrad,采样间隔为π/6,并假设理想频率响应的一个过渡点45.01Hd。设计一个24阶的反对称分段线性带通FIR滤波器,并将实际频率响应与期望频率响应绘图比较。这里期望频率响应为:f=[00.30.40.60.70.9];a=[01000.50.5]。设计一17阶Parks-McClellan带通滤波器,要求期望频率响应f=[00.30.40.60.71];a=[001100]。一混合正弦信号包含5Hz、15Hz、30Hz的三种频率信号,现要求设计适当的滤波器,保留15Hz频率分量信号,给定采样频率100Hz。6.1概述实际中接收到的信号往往掺杂着噪声或干扰,如何从接收信号中消除噪声或干扰是信号处理领域的关键问题之一,即我们这里所要介绍的滤波问题。所谓滤波,就是从接收信号中滤除噪声和干扰从而提取有用信号的过程,相应的系统或装置被称为滤波器。按照滤波器输入输出信号的类型,滤波器可分为模拟滤波器和数字滤波器,这里我们主要研究的是后者。6.1.1数字滤波器的分类数字滤波器的种类多种多样,相应的分类方法也不尽相同,可以从功能上、从结构上、以及从实现方法或设计方法上进行分类,甚至也可以从滤波域进行分类,即根据滤波器是在时间域、频率域还是在空间域实现,对应有时域滤波器、频域滤波器以及空域滤波器。不过,从总体上而言,可以将滤波器分为两大类:经典滤波器和现代滤波器。经典滤波器也称为选频滤波器,其特点是假定输入信号中的有用成分和希望滤除的成分各自分布在不同的频带,这样通过选择合适的频率进行滤波,就可达到滤除噪声的目的。可见,经典滤波器都是在频域内实现滤波处理的,因而可将其纳入频域滤波器范畴。现代滤波器比经典滤波器更为复杂的滤波器形式,适用于当有用信号和噪声成分的频带相互重叠、经典滤波器不能有效滤除噪声的情况。这类滤波器可以按照随机信号内部的一些统计分布规律,从干扰中最佳地提取有用信号。比较典型的现代滤波器包括:维纳滤波器、卡尔曼滤波器和自适应滤波器等。与经典滤波器只集中于频域处理不同,现代滤波器已经扩展到时域和6.1概述3空域内进行。提示:在本书中只讨论经典滤波器的设计和实现。另外,从功能上看,或者说从滤波器的频率响应特性上看,数字滤波器又可分为:低通滤波器高通滤波器带通滤波器带阻滤波器全通滤波器再有,按实现的网络结构或单位冲激响应的时长,数字滤波器可分成两大类:无限冲激响应(IIR)滤波器有限冲激响应(FIR)滤波器本章将重点介绍IIR和FIR两类滤波器的MATLAB设计与实现。6.1.2数字滤波器的设计设计一个数字滤波器,不管是IIR滤波器还是FIR滤波器,一般可以分为三个步骤。设计步骤[1]首先,按照任务需求,确定滤波器的性能指标。所谓的任务需求包括滤除或保留哪些频率成分、滤波后信号允许有多大的幅度或相位失真等,而滤波器的性能指标具体指代一组滤波器系数等参量。[2]其次,设计一个系统函数zH去逼近这个性能指标,这里的系统函数包括两类,即IIR系统函数和FIR系统函数。这里,系统函数一般可以表示成为1z的有理式NiiiMiiizazbzH101提示:系统函数设计的关键就是求出分子和分母表达式中的系数向量a和b。[3]最后,实现所设计的系统函数zH。这里的操作包括选择运算结构、确定合适字长等,运算结构具体指代级联型、并联型、直接型等等。在本章后续小节中,会重点介绍本部分的内容,包括IIR滤波器和FIR滤波器的设计方法及在MATLAB中如何实现。6.1.3数字滤波器的实现在滤波器设计阶段已经产生了滤波器系数,向量a和b,之后在MATLAB信号处理工具第6章数字滤波器设计与实现4箱提供了两个函数用来实现数字滤波器:dfilt和filter。6.1.3.1dfilt函数用来指定滤波器结构,并产生一个滤波器对象。其基本格式为:Hd=dfilt.structure(input1,…)返回一个数字滤波器对象Hd,其结构为指定的“structure”类型,每种结构带有一个或更多个分量。Hd=[dfilt.structure(input1,…),dfilt.structure(input1,…),…]返回一个向量Hd,代表一组滤波器对象。函数dfilt的“structure”指定了滤波器的结构类型,几种典型的结构列于下表。表6-1函数dfilt的几种典型结构类型dfilt.structure描述dfilt.df1直接Ⅰ型dfilt.df2直接Ⅱ型dfilt.dffirFIR直接型dfilt.latticeallpass格型全通例6-1设计一个Butterworth滤波器,并采用直接Ⅱ型结构实现对数据x的滤波,要求利用函数dfilt。%采用dfilt函数实现直接Ⅱ型结构滤波程序[b,a]=butter(5,0.4);Hd=dfilt.df2(b,a);filter(Hd,x)程序中函数butter用于设计Butterworth滤波器,其具体调用格式在后面IIR滤波器设计章节中会详细介绍。6.1.3.2filter函数该函数基于输入滤波系数a和b,采用一个直接Ⅱ型滤波器结构对数据进行滤波处理。其调用格式包括:y=filter(b,a,x)返回值y为滤波后的输出,参量b和a分别为滤波器系统函数zH分子和分母上的系数,x表示输入信号向量。如果a(1)不等于1,filter函数将除以a(1)实现归一化,如果a(1)等于零,则函数filter返回错误提示。当x为一矩阵时,filter将在x的每一列执行滤波处理。[y,zf]=filter(b,a,x)返回值zf为滤波器延时的最终条件。如果输入信号x为一个行向量或列向量,则zf为一列向量,长度max(length(a),length(b))-1。当x为一矩阵时,zf则是一组向量构成的阵列,每个向量与x的每一列相对应。提示:对输入系数a和b直接采用filter命令,可以实现滤波器归一化,方法为令输入系数a(1)为1,;而在dfilt生成的滤波器对象基础上采用filter命令,则无法实现滤波器归一化。6.2IIR滤波器设计5例6-2设计一个Butterworth滤波器,并采用直接Ⅱ型结构实现对数据x的滤波,要求利用函数filter。%采用filter函数实现直接Ⅱ型结构滤波程序[b,a]=butter(5,0.4);filter(b,a,x)提示:filter函数仅实现直接Ⅱ型结构,并不创建一个滤波器对象。选择一个合适的滤波器结构取决于滤波器所要实现的具体任务或功能。通过本章后面的介绍,将会令读者了解IIR和FIR滤波器各自的优缺点,以及各种具体实现方法的特点,从而可根据不同的任务需求选择合适的滤波器结构。6.2IIR滤波器设计IIR数字滤波器的系统函数可以表示为NiiiMiiizazbzH101IIR滤波器设计关键是确定系统函数的分子和分母表达式,即确定滤波系数a和b的值,从而使得所设计滤波器满足给定的性能指标要求。IIR滤波器设计一般有三类方法:模拟原型法采用经典低通滤波器作为连续域上的设计模型,使其逼近性能指标,而后将模拟滤波器系统函数变换为所需的数字滤波器系统函数,最终得到IIR数字滤波器。直接设计法基于给定的滤波器参数直接在离散域上寻找合适的数字滤波器,不同于基于模拟滤波器的方法,该方法并不局限于常规的滤波器类型,如低通、高通、带通和带阻等,而可以设计任意的频率响应。参数建模法寻找接近于所需要设计的滤波器的通用模型,分为时域和频域建模两类方法。在MATLAB信号处理工具箱中针对以上三种IIR数字滤波器设计方法,分别提供了多个函数来完成,见表6-2。其中第一类方法,即模拟原型法,是IIR数字滤波器设计的最重要的方法,也将是接下来介绍的重点内容。表6-2MATLAB信号处理工具箱提供的IIR滤波器设计方法及相应函数设计方法函数模拟原型完全设计函数besself,butter,cheby1,cheby2,ellip阶次估计函数buttord,cheb1ord,cheb2ord,ellipord低通模拟原型函数besselap,buttap,cheblap,cheb2ap,第6章数字滤波器设计与实现6ellipap频率变换函数lp2bp,lp2bs,lp2hp,lp2lp滤波器离散化函数bilinear,impinvar直接设计yulewalk参数建模时域建模函数lpc,prony,stmcb频域建模函数invfreqs,invfreqz提示:完全设计函数中的besself仅用于Bessel(贝塞尔)模拟滤波器的设计,所以在本章不予介绍。6.2.1模拟原型法模拟原型法设计IIR数字滤波器,就是从已知的模拟滤波器系统函数sHa设计数字滤波器系统函数zH。常见的模拟滤波器类型包括Butterworth(巴特沃斯)、Chebyshev(切比雪夫)Ⅰ型、ChebyshevⅡ型和椭圆滤波器,基于这些模拟滤波器,MATLAB信号处理工具箱提供了对应的IIR数字滤波器设计函数,见表6-2。接下来将具体介绍如何利用这些函数设计一个给定性能指标的IIR数字滤波器。6.2.1.1完全设计函数MATLAB信号处理工具箱提供了几个完全设计函数,只用一条语句就可轻松地

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功