资源描述
基于有限冲击响应数字滤波器的优化仿真设计Optimization and Simulation Design Based on Finite Impulse Response Digital Filter摘 要当前我们正处于数字化时代,数字信号处理技术受到了人们的关注,其理论及算法随着计算机技术和微电子技术的发展得到了飞速的发展,并被广泛应用于语音和图像处理、数字通信、谱分析、模式识别和自动控制等领域。在数字信号处理中,数字滤波技术占有重要的地位,几乎出现在所有的数字信号处理系统中。 本设计利用最小二乘法对FIR滤波器进行优化设计,并以生动的界面、丰富的内容、交互式的人机对话实现了低通、高通、带通、带阻的FIR 数字滤波器的优化设计,并列出了它们的幅度特性和相位特性。并使用MATLAB语言进行程序验证和利用信号处理工具箱的FDATool工具进行界面设计。利用MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大地减轻了工作量,有利于滤波器设计的最优化,达到了设计的预期的仿真结果。FIR数字滤波器与IIR数字滤波器相比,可以保持精确严格的线性相位特性。另外,当采用FFT方法进行滤波时,还可以大大提高效率,因此,FIR 数字滤波器的应用已经日趋广泛。关键词:有限脉冲响应;数字滤波器;最小二乘法;相位特性目 录摘 要IAbstractII目 录III第1章 绪 论1第2章 数字滤波器的设计32.1 数字滤波器的概述32.1.1 数字滤波器的定义和分类32.1.2 数字滤波器的发展动态32.1.3 数字滤波器的设计步骤42.1.4 数字滤波器的实现42.1.5 FIR和IIR型数字滤波器的对比42.2 FIR数字滤波器的设计52.2.1最小二乘法简介52.2.2 设计思想72.2.3 推导低通、高通、带通、带阻h(n)表达式92.2.4 优化设计的意义102.2.5 FIR数字滤波器幅度特性推导及简介112.2.6 FIR线性相位特点122.2.7 FIR数字滤波器的特点14第3章 FIR数字滤波器的MATLAB设计153.1 MATLAB的简介153.1.1 MATLAB的功能153.1.2 MATLAB的语言特点163.2 工具函数的功能说明173.2.1 firls函数183.2.2 fircls函数183.2.3 fircls1函数183.3 程序设计法193.4 滤波器分析设计工具FDATool的应用213.4.1 FDATool的简介213.4.2 应用FDATool设计滤波器22第4章 仿真结果及结果分析254.1 低通数字滤波器设计结果254.2 高通数字滤波器设计结果274.3 带通数字滤波器设计结果294.4 带阻数字滤波器的设计结果314.5 FIR滤波器的性能分析33结 论35参考文献36附 录37致 谢40- 39 -第1章 绪 论几乎在所有的工程技术领域中都会涉及到信号的处理问题,其信号表现形式有电、磁、机械以及热、光、声等。信号处理的目的一般是对信号进行分析、变换、综合、估值与识别等。如何在较强的噪声背景下提取出真正的信号或信号的特征,并将其应用于工程实际是信号处理的首要任务。根据处理对象的不同,信号处理技术分为模拟信号处理系统和数字信号处理系统。数字信号处理(Digital signal Processing,DSP)与模拟信号处理相比有许多优点,如相对于温度和工艺的变化数字信号要比模拟信号更稳健,在数字表示中,精度可以通过改变信号的字长来更好地控制,所以DSP技术可以在放大信号的同时去除噪声和干扰,而在模拟信号中信号和噪声同时被放大,数字信号还可以不带误差地被存储和恢复、发送和接收、处理和操纵。许多复杂的系统可以用高精度、大信噪比和可重构的数字技术来实现。目前,数字信号处理已经发展成为一项成熟的技术,并且在许多应用领域逐步代替了传统的模拟信号处理系统,如通讯、系统控制、电力系统、故障检测、语音、图像、自动化仪器、航空航天、铁路、生物医学工程、雷达、声纳、遥感遥测等。这些应用都有着美好的技术前景和巨大的实用价值。数字信号处理中一个非常重要且应用普遍的技术就是数字滤波1。所谓数字滤波,是指其输入、输出均为数字信号,通过一定的运算关系改变输入信号所含的频率成分的相对比例或滤除某些频率成分,达到提取和加强信号中的有用成分,消弱无用的干扰成分的目的。数字滤波与模拟滤波相比,有精度高、可靠性高、灵活性好等突出优点,可以满足对幅度和相位的严格要求,还能降低开发费用,缩短研制到应用的时间,在很多领域逐步代替了传统的模拟信号系统。关于数字滤波器理论研究的发展也带来了数字滤波器在实现上的空前发展。20世纪60年代起,由于计算机技术、集成工艺和材料工业的发展,滤波器的发展上了一个新台阶,朝着低功耗、高精度、小体积、多功能、稳定可靠和价廉等方向努力,其中高精度、小体积、多功能、稳定可靠成为70年代以后的主攻方向,导致数字滤波器、RC有源滤波器、开关电容滤波器和电荷转移器等各种滤波器的飞速发展。到70年代后期,上述几种滤波器的单片集成己被研制出来并得到应用,90年代至现在主要致力于把各类滤波器应用于各类产品的开发和研制。当然,对滤波器本身的研究仍在不断进行。数字信号处理方法通常涉及变换、滤波、频谱分析、编码解码等处理。数字滤波是重要环节,它能满足滤波器对幅度和相位特性的严格要求,克服模拟滤波器所无法解决的电压和温度漂移以及噪声等问题。而有限冲击响应FIR滤波器在设计任意幅频特性的同时能够保证严格的线性相位特性。结合MATLAB工具软件的辅助设计,使得FIR滤波器具有快速、灵活、适用性强,硬件资源耗费少等特点。第2章 数字滤波器的设计2.1 数字滤波器的概述2.1.1 数字滤波器的定义和分类数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。数字滤波器具有稳定性高、精度高、灵活性大等突出的优点。随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。从数字滤波器的单位冲击响应来看,可以分为两大类:有限冲击响应(FIR)数字滤波器和无限冲击响应(IIR)数字滤波器。滤波器按功能上分可以分为:低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)2。2.1.2 数字滤波器的发展动态近些年,线性滤波方法,如Wiener滤波、Kalman滤波和自适应滤波得到了广泛的研究和应用。同时一些非线性滤波方法,如小波滤波、同态滤波、中值滤波和形态滤波等都是现代信号处理的前沿课题,不但有重要的理论意义,而且有广阔的应用前景。Wiener滤波是最早提出的一种滤波方法,当信号混有白噪声时,可以在最小均方误差条件下得到信号的最佳估计。但是,由于求解Wiener-Hoff方程的复杂性,使得Wiener滤波实际应用起来很困难,不过Wiener滤波在理论上的意义是非常重要的,利用Wiener滤波的纯一步预测,可以求解信号的模型参数,进而获得著名的Levinson算法。Kalman滤波是20世纪60年代初提出的一种滤波方法。与Wiener滤波相似,它同样可以在最小均方误差条件下给出信号的最佳估计。所不同的是,这种滤波技术在时域中采用递推方式进行,因此速度快,便于实时处理,从而得到了广泛的应用。Kalman滤波推广到二维,可以用于图像的去噪。当假设Wiener滤波器的单位脉冲响应为有限长时,可以采用自适应滤波的方法得到滤波器的最佳响应。由于它避开了求解Wiener-Hoff方程,为某些问题的解决带来了极大的方便。小波滤波就是利用信号和噪声的目的。同态滤波主要用于解决信号和噪声之间不是相加而是相乘关系时滤波问题。另外,当信号和噪声之间为卷积关系的时候,在一定条件下可以利用同态滤波把信号有效地分离开来,由同态滤波理论引申出的复时谱也成为现代信号处理中极为重要的概念。Wiener滤波、Kalman滤波和自适应滤波都是线性滤波,线性滤波的最大缺点就是在消除噪声的同时,会造成信号边缘的模糊。中值滤波是20世纪70年代提出的一种非线性滤波方法,它可以在最小绝对误差条件下,给出信号的最佳估计。这种滤波方法的优点,就是能够保持信号的边缘不模糊。另外它对脉冲噪声也有良好的清除作用。形态滤波是建立在集合运算上的一种非线性滤波方法,它除了用于滤除信号中的噪声外,还在图象分析中发挥了重要的作用。2.1.3 数字滤波器的设计步骤数字滤波器的设计大致有以下三个步骤:首先,根据实际需要确定数字滤波器的性能指标。这个性能指标通常是频域特性,例如数字滤波器的通、阻带截频、衰耗等。此外,还必须确定取样间隔T,从而确定出折叠频率,因为这个折叠频率限制了要设计的数字滤波器的频率范围。其次,是逼近问题。逼近问题就是根据所要求的数字滤波器的指标,设计一个因果稳定的数字滤波器的输入/输出特性,通常是系统函数H(z)。最后,选择数字滤波器的实现结构。由于同一个数字滤波器的传输函数H(z)可以有很多结构形式,因而就需要对有限字长效应按优化原则从中选取最好的结构。假如数字滤波器在通用计算机上用软件实现,这个结构问题的重要性并不突出。但是,如果用硬件做成专用设备时,结构和字长效应是不能不考虑的问题。2.1.4 数字滤波器的实现数字滤波器一般可以用两种方法实现:一种是根据描述数字滤波器的数学模型或信号流图,用数字化硬件组成专用信号处理机,这就是所谓的硬件实现;另一种是利用通用计算机,通过编制程序来完成运算,这也就是所谓的软件实现3。它们各有优缺点。软件实现具有灵活性但速度较慢,一般不能实时处理。专用硬件速度快,能进行高速实时处理,但与软件相比,当滤波器特性或频率改变时则缺乏灵活性。因此,随着大规模集成电路的发展,采用软件和硬件相结合,既能使功能软件化又能充分发挥硬件潜力的方法得到了广泛的应用。2.1.5 FIR和IIR型数字滤波器的对比FIR和IIR型数字滤波器在提取数字微分信号时由于自身特性使其具有不同的特点,下面将其各自优缺点做一简单对比。FIR滤波器的系统函数是多项的,是非递归结构系统,它只在原点出有一个N阶极点,因而系统是稳定的。FIR滤波器由于有限字长效应而造成的误差也较小。此外FIR滤波器可以采用快速傅立叶变换(FFT)来实现,在阶数相等时运算速度比IIR滤波器快的多。IIR滤波器的系统函数是有理分式其分母多项式对应于反馈支路,因而这种滤波器是递归结构系统,只有当所有极点都在单位圆内时滤波器才是稳定的。但实际中由于存在有限字长效应,滤波器有可能变的不稳定。FIR滤波器必须用比IIR滤波器多的阶数来满足相同的技术指标,因此FIR滤波器所用的存储单元和所需的运算次数都比IIR滤波器多。例如,用频率取样法设计阻带衰减为-20dB的FIR滤波器,其阶数是33阶才能达到要求,但如果使用双线性变换法设计一个切比雪夫IIR滤波器,则只要4到5阶就可以达到同样的指标,这里FIR滤波器的阶数比IIR滤波器要高5到10倍。另外,FIR滤波器可得到严格的线性相位,而IIR滤波器则不能做到。事实上IIR滤波器的选频特性越好,它的相位的非线性就越严重。如果要求IIR滤波器具有线性相位,同时又要求他满足幅度响应要求,那么就必须用一个全通网络进行相位矫正,这必然会大大增加滤波器的节数和复杂性。因此在严格要求线性相位的情况下应该选择FIR滤波器。从设计工具看,滤波器可以借助于模拟滤波器的成果,因此一般都有高效的封闭形式的设计公式可供准确计算,计算工作量比较小,对计算工具的要求不高。FIR滤波器设计则一般没有封闭式的计算公式。窗口法虽然仅仅对窗口函数可以给出计算公式,但计算通带阻带衰减等仍无显示表达式。一般FIR滤波器的设计只有计算程序可循,因此对计算工具要求较高。虽然IIR滤波器设计简单,但主要用于设计具有片段常数特性的滤波器,如低通、高通、带通及带阻等,往往脱离不了模拟滤波器的格局。而FIR滤波器则要灵活的多,尤其它能易于适应某些特殊的应用,如构成微分器和积分器,或用于巴特沃斯,切比雪夫等逼近不可能达到的预定指标的情况。从以上各方面的比较可以看出,FIR和IIR型滤波器各有特点,在实际应用中究竟选择那种类型的滤波器,应从实际情况的需要选择合适的滤波器。如对相位要求不敏感的场合,可以选择IIR型较为合适;而对于图像信号处理,数据传输等以波形携带信息的系统,则针对线性要求较高,采用FIR型效果较好。因此在选择时要考虑经济上的要求以及计算工具的条件等多方面的因素。2.2 FIR数字滤波器的设计2.2.1最小二乘法简介由高斯在十九世纪初期提出的最小二乘法(LS)也许是最古老的一种估计方法。它的生命力和重要价值早已由它在广泛范围内应用的成功经验所证实。和最大似然法不同,最小二乘法主要应用于所谓线性回归模型。在这种情形下,它可以导出一些十分简单的算法,从而使在计算机上实现实时估计成为可能。这一点对于信号处理具有重要的意义;在信号处理的一些重要的应用场合诸如信号检测、语音辨识、实时谱估计和自适应处理等,算法实时实现的可能性是一个基本的条件。最小二乘法在信号处理中的各种形式的应用迄今为止,仍是一个十分活跃的研究领域。这种研究旨在追求算法在计算效率和数值稳定性上的统一。古典回归模型定义为4: (2-1)式中是p个独立地已知变量,是p个参数,为具有零均值地随机变量。对此模型可作如下地理解:Y是测量值,其中包括测量噪声(误差)。由于具有零均值即的特性。故有: (2-2)假定有几个值,每一个对应于一组不同的值。那么可以利用这些数据来估计模型参数之值。用下标表示第t个Y和的数据和相应的误差,有: (2-3) 各次测量误差互不相关但具有同一方差,令为的一个估计。则基于此估计以及已知的值,的估计为: (2-4)那么有误差: (2-5)误差常称作“残差”。最小二乘法的基本思想就是选择使得各次估计误差的平方和为最小如公式(2-6): (2-6)换而言之,Q函数的最小二乘估计就是使误差函数Q为最小的那一个,这个量可以理解为误差能量。因此,最小二乘估计,使误差能量为最小。2.2.2 设计思想由高斯在十九世纪提出的最小二乘法是最古老的一种估计方法。其基本思想就是选择使得各次估计误差的平方和为最小如式(2-7)。换而言之,Q函数的最小二乘估计就是使误差函数Q为最小的那一个,这个量可以理解为误差能量。因此,最小二乘估计,使误差能量为最小5。 (2-7)结合最小二乘法对FIR 数字滤波器进行优化设计,在频域进行计算。用表示实际得到的滤波器频率响应,用表示要求的频率响应,以表示频率响应误差,即 (2-8)则误差能量为: (2-9)那么均方误差为: (2-10)设计的目的就是选择一组使得最小。先将(2-10)中的和分别用它们的冲击响应表示: (2-11) (2-12)由于用FIR 滤波器来逼近,故h(n)长度是有限的。将它们代入(2-9)式可得: (2-13) 按照帕塞瓦公式有: (2-14) 由此式可以看出,等式右边第二个求和项只取决于给定的特性,它和设计值无关,故是一个常数,要使最小,就必须使第一项求和式最小,即希望:在这一条件下,就有: 也就是说要满足: (2-15)这个式子恰好是矩形窗的结果。通常我们选取的窗函数为: (2-16)而这样得到的()为非因果序列,为了把变成因果序列h(n),其办法是将有限长序列通过的时延,将其变成因果序列,从而真正的如式(2-15)的h(n)序列。2.2.3 推导低通、高通、带通、带阻h(n)表达式1低通h(n)表达式如下6: 假设 ,窗函数如式(2-16)则 (2-17)其中N值由矩形窗的过渡带宽决定,=2高通h(n)表达式为: (2-18)其中N值为,为过渡带宽。3带通h(n)表达式为: (2-19)其中N值仍由过渡带宽决定。4带阻h(n)表达式为: (2-20)2.2.4 优化设计的意义所谓优化,是指在给定的设计指标和元件、参数的允许取值范围条件下,确定一组独立的设计参数,使系统达到最佳技术经济性能。系统性能的优劣通常用一个关于设计参数的函数来描述,该函数即称为“目标函数”,待定的设计参数称为“优化变量”,而参数范围和未包含在目标函数中的一些设计指标即构成优化变量的“约束条件”寻求系统的最佳性能,在数学上通常就是最小化或最大化目标函数。优化设计是指从多种方案中选择最佳方案的设计方法。它以数学中的最优化理论为基础,以计算机为手段,根据设计所追求的性能目标,建立目标函数,在满足给定的各种约束条件下,寻求最优的设计方案。第二次世界大战期间,在军事上首先应用了优化技术。1967年,美国的R.L.福克斯等发表了第一篇机构最优化论文。1970年,C.S.贝特勒等用几何规划解决了液体动压轴承的优化设计问题后,优化设计在机械设计中得到应用和发展7。随着数学理论和电子计算机技术的进一步发展,优化设计已逐步形成为一门新兴的独立的工程学科,并在生产实践中得到了广泛的应用。通常设计方案可以用一组参数来表示,这些参数有些已经给定,有些没有给定,需要在设计中优选,称为设计变量。如何找到一组最合适的设计变量,在允许的范围内,能使所设计的产品结构最合理、性能最好、质量最高、成本最低(即技术经济指标最佳),有市场竞争能力,同时设计的时间又不要太长,这就是优化设计所要解决的问题。一般来说,优化设计有以下几个步骤:1.建立数学模型。2.选择最优化算法。3.程序设计。4.制定目标要求。5.计算机自动筛选最优设计方案等。通常采用的最优化算法是逐步逼近法,有线性规划和非线性规划。 FIR 数字滤波器采用的优化设计,其意义为:根据滤波器的设计指标,导出一组条件,要求在此条件下,在整个逼近的频带范围内,逼近误差绝对值的最大值的平方和为最小,从而得到唯一的最佳解答。2.2.5 FIR数字滤波器幅度特性推导及简介由于,所以根据傅立叶变换性质,时域乘积,在频域应等于相应频谱卷积。因此实际FIR滤波器幅度函数为: (2-21)下面结合几个关键频率点,根据上式说明卷积过程8。当时,响应可以近似看作从到的全部积分面积,我们将用可进行归一化。 当时,正好与的一半重叠,因此卷积结果正好等于的一半,即。图2-1 矩形窗卷积过程当时,响应值,整个主瓣在通带以内,因此卷积得到最大值,频率响应出现正肩峰(或者说上冲)。当,响应值,的主瓣刚好全部在通带之外,通带内旁瓣负面积大于正面积,因此卷积达到最小值,出现负肩峰(泄漏)。当时,的左尾旁瓣扫过通带,因此围绕着零点波动。当时,主瓣和左、右旁瓣扫过通带,所以围绕着第一个波动。2.2.6 FIR线性相位特点设FIR 滤波器单位冲击响应是,则FIR滤波器系统函数为: (2-22)相应的滤波器频率响应为9: (2-23) 其中,与分别表示幅度和相位特性。数字滤波器的特性与离散信号时延有密切联系。相时延 (2-24)群时延 (2-25)如果需要滤波器具有严格的线性相位特性,则应有: (:为常数) (2-26) 则根据式(2-24)和(2-25)可知此时相时延与群时延必定相等,而且为常数,即。由式(2-23)可知,如果具有线性相位特性,则有: (2-27)化简得:用数学归纳法可以得到方程的解为: (2-28) (2-29)上式是FIR 滤波器具有严格线性相位的充要条件,要求必须满足式(2-29) 的对称性,即以点为偶对称,它的相位延时等于h(n)长度的一半,即个抽样周期5。用类似的方法还可以证明仅具有恒定群时延的滤波器满足下列关系: (2-30) (2-31) (2-32)说明此时相位特性仍是一条直线,信号通过滤波器不仅有个抽样周期的群时延,而且有的时延。式(2-11)还表明以点奇对称。因此,线性相位FIR滤波器分为两大类10:第一类满足式(2-7)和(2-8)的条件,则以点偶对称,即;第二类满足式(2-9)和 (2-10)的条件,则以点奇对称,即。2.2.7 FIR数字滤波器的特点FIR 数字滤波器有以下特点11:1除幅度特性可以随意设计外,还可以保持精确严格的相位特性,线性相位体现在时域中仅仅是在时间上的迟延。这个特点在图像信号处理和数据传输等波形传递系统中是非常重要的。2FIR 滤波器的单位冲击响应是有限长序列,所以它在任何形式下的Z变换都在整个Z平面上收敛,因此FIR 滤波器不存在稳定性问题。3与IIR滤波器相比,FIR 滤波器受有限寄存长度影响小,且分析简单。4对于具有锐截止频率特性的滤波器,FIR滤波器的阶数比较高,但当FIR 滤波器借助FFT,即用称作快速卷积的方法来实现时,其计算量可以明显减少,从而大大提高效率。第3章 FIR数字滤波器的MATLAB设计3.1 MATLAB的简介3.1.1 MATLAB的功能MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。当前流行的MATLAB5.3/Simulink3.0包括拥有数百个内部函数的主包和30几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。MATLAB Compiler是一种编译工具12,它能够将那些利用MATLAB提供的编程语言M语言编写的函数文件编译生成标准的C/C+语言源文件,而生成的标准C/C+源代码可以被任何一种C/C+编译器编译生成函数库或者可执行文件,这样就可以扩展MATLAB功能,使MATLAB能够同其他高级编程语言(例如C/C+语言)进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。MATLAB除了能够和C/C+语言集成开发以外,目前的MATLAB还提供了和Java语言接口的能力,并且它还支持COM标准,能够和任何一种支持COM标准的软件协同工作。另外,在Release 13中,包含了MATLAB Compiler的扩展产品MATLAB COM Builder和Excel Builder,分别用来将MATLAB的函数文件打包成COM组件或者Excel插件,将MATLAB应用程序算法集成到相应的开发工具或者应用软件中。 利用M语言还开发了相应的MATLAB专业工具箱函数供用户直接使用,这些工具箱应用的算法是开放的、可扩展的,用户不仅可以察看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法以便扩充工具箱的功能。目前MATLAB产品的工具箱有40多种,分别涵盖了数据获取、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。3.1.2 MATLAB的语言特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。1语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。具有FORTRAN和C等高级语言知识的读者可能已经注意到,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码13,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用FORTRAN和C这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用MATLAB编写以上两个小程序的具体过程。MATLAB求解下列方程,并求解矩阵A的特征值。 AX=b,其中: A=32134567237985124323546598347135 b= 12 34解为:X=AB;设A的特征值组成的向量e,e=eig(A)。可见,MATLAB的程序极其简短。更为难能可贵的是,MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。2运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。3MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。5程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6 MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。7MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工作箱如control,toolbox,signal processing toolbox,communication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。9源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。3.2 工具函数的功能说明本次设计采用最小二乘法对有限长冲击响应FIR滤波器进行优化设计,从设计方面来说,MATLAB7.0为我们提供了很好的仿真设计平台。它的简易性在于它并不同于DELPHI 等软件必须设计窗体界面,在MATLAB中,只需在MATLAB的命令窗口中键入FDATool打开功能齐全的交互式图形用户程序滤波器设计和分析工具FDATool。需要从FDATool中,通过工作区输入滤波器,或者直接确定滤波器的系数,即可利用FDATool提供的工具分析滤波器的特性。也可以在FDATool中,或从MATLAB的命令窗口中启动滤波器可视化工具,另外提供一个单独的窗口,用于分析滤波器,这样可以方便地替代命令行滤波器分析函数。另外,MATLAB 7.0 信号处理工具箱提供更为通用的工具函数firls,fircls和fircls1,采用不同的优化方法可以设计最优滤波器和多频带滤波器。出于对设计及使用有效性和简易性的考虑,我们主要采用功能齐全的交互式图形用户程序-滤波器设计和分析工具FDATool来进行滤波器的仿真设计。下面让我们分别对这两种方法进行设计介绍。3.2.1 firls函数Firls是fir1和fir2函数的扩展,它采用最小二乘法,使指定频段内的理想分段线性函数与滤波器幅频响应之间的误差平方和最小。firls其调用格式为:b=firls(n,f,a)b=firls(n,f,a,w)b=firls(n,f,a,ftype)b=firls(n,f,aw,ftype)该函数用于设计n阶FIR滤波器,其幅频特性由f和a向量确定,调用后返回长度为n+1的滤波器系数向量b,且这些系数遵循以下偶对称关系:b(k)=-b(n+2-k),k=1,2,n+1b=firls(n,f,a,w)则使用权系数w给误差加权。 w的长度为f和a的一半。3.2.2 fircls函数fircls其调用格式为:b=fircls(n,f,a,up,lo)该函数返回长度n+1的线性相位滤波器,期望逼近的频率分段恒定,由向量f和a确定,频率的上下限由参数up和lo确定,长度与a相同。f中元素为临界频率,取值范围0,1,且按递增顺序排列。3.2.3 fircls1函数fircls1该函数采用约束最小二乘法设计基本的线性相位高通和低通滤波器,其调用格式为:b=fircls1(n,wo,dp,ds)b=fircls1(n,wo,dp,ds,high)b=fircls1(n,wo,dp,ds,wt)b=fircls1(n,wo,dp,ds,wt,high)b=fircls1(n,wo,dp,ds,wp,ws,k,high)b=fircls1(n,,wo,dp,ds,wp,ws,k)b=fircls1(n,wo,dp,ds,design_flag)b=fircls1(n,wo,dp,ds)函数返回长度为n+1的线性相位低通FIR滤波器,截止频率为wo,取值0-1之间。通带幅度偏离1.0的最大值为dp,阻带偏离0的最大值为ds。b=fircls1(n,wo,dp,ds,high)则返回高通滤波器,n必须为偶数。b=fircls1(n,wo,dp,ds,wp,ws,k)则采用平方误差加权,通带的权值比阻带的大k倍。wp为通带边缘频率,ws为阻带边缘频率,其中wpwows;如果要设计高通滤波器,则必须使wswowp。3.3 程序设计法在MATLAB中,对各种滤波器的设计都有相应的计算振幅响应的函数,可以用来做滤波器的程序设计。用 MATLAB对FIR数字滤波器进行仿真设计的基本步骤如下:1总体设计(所设计滤波器的总体参数设定)2建立新的M文件3编写程序4调试应用程序,观察波形下面让我们以低通数字滤波器的设计为例,来介绍整个程序设计过程:设计55阶低通滤波器,截止频率在0.31用最小二乘法设计数字低通滤波器。b=fircls1(n,wo,dp,ds)函数返回长度为n+1的线性相位低通FIR滤波器,截止频率为wo,取值0-1之间。通带幅度偏离1.0的最大值为dp,阻带偏离0的最大值为ds,n为滤波器的阶数。2建立新的M文件在编写程序前,首先要创建新的M文件,加入的方法为:(1)选择“File”菜单项。(2)单击“New M-file”快速按钮。创建新的M文件后,就可以编写程序代码了。其图如3-1。图3-1 文件窗口3编写程序% design lowpass filter with fircls1n= 55; wo= 0.3;dp= 0.02; ds=0.008;b=fircls1(n,wo,dp,ds);h,w=freqz(b);plot(w/pi,abs(h);grid % 画幅频响应图4调试应用程序在MATLAB环境下运行该程序即可得到滤波器幅频相频响应曲线和滤波器系数h。单击所建M文件中的“Debug”按钮,即可观察到所设计滤波器的幅频特性。如图3-2和3-3所示。图3-2调试窗口图3-3 幅频响应图3.4 滤波器分析设计工具FDATool的应用3.4.1 FDATool的简介FDATool(Filter Design and Analysis Tool)是一个功能强大的数字滤波器分析设计工具,它涵盖了信号处理工具箱中所有的滤波器设计方法。利用它可以方便地设计出满足各种性能指标(或直接指定滤波器系数)的滤波器,并可查看该滤波器的各种分析图形。待滤波器设计满意后,还可以把其系数直接导出为MATLAB变量、文本文件或C语言头文件等14。它也是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、 Chebyshev Type II(切比雪夫II型) 法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify OrderN-1),如果选择Minimum Order则MATLAB根据所选择的滤波器类型自动使用最小阶数。Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。Window Specifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。在命令窗中运行FDATool打开该工具,如图3-4所示。图3-4 数字滤波器分析设计工具FDATool3.4.2 应用FDATool设计滤波器FDATool的界面分上下两个部分:上面部分显示有关滤波器的信息,下面部分用来指定设计参数。下面按照滤波器的一般设计步骤对FDATool加以直观的介绍。1在Filter Type下选择滤波器类型:低通,高通,带通,带阻,微分器,Hilbert变换器,多带,任意频率响应,升余弦等(如果安装了滤波器设计工具箱,还会有更多选项);然后在Design Method 下从众多的IIR或FIR滤波器设计方法中选择一个合适的设计方法。2在Filter Order 下选择滤波器阶数,可以使用满足要求的最小滤波器阶数或直接指定滤波器的阶数。3根据前面两步中选择的设计方法,Options下会显示与该方法对应的可调节参数。例如选择FIR窗函数设计法时的Options如图3-5所示。在该面板的Window中可选择不同的窗函数(包括自定义函数,或窗函数需要的参数),单击View按钮可在FDATool中查看选中的窗函数。图3-5 FIR窗函数设计法对应的Options选项4选择滤波器的类型、设计方法和滤波器阶数时,相应的设计指标及其含义会在Filter Specifications中用图形直观地显示出来以供设计参考。这些设计指标需要在Frequency Specifications和Magnitude Specifications下明确指定。例如选择了FIR等波纹低通最小阶数设计后的FDATool如图3-4所示,其中Filter Specifications显示了采用该设计时需指定的设计指标。即必须在Frequency Specificaions下设置频率单位(归一化频率单位或Hz等)、采样频率Fs、通带截止频率Fpass和阻带起始频率Fstop,在Magnitude Specifications下设置幅度单位(dB或线性)、通带起伏Apass和阻带衰减Astop15。一般说来,不同的滤波器类型和设计方法需要不同的设计参数。这些设计参数显示在Frequency Specifications和Magnitude Specifications中,对于某些设计方法,这两个面板会合并为一个面板。例如选择了多带FIR等波纹设计时相应的界面如图3-6所示,参照Filter Specifications中的图示,可以很直观地看出这些参数的含义。图3-6指定滤波器的设计参数5指定所有的设计指标后,单击FDATool最下面的Design Filter按钮即可完成滤波器设计。(设计完成后Design Filter按钮变为不可用,除非再次修改了设计指标。)6通过FDATool 的工具条(如图3-7所示)查看设计的滤波器性能。 图3-7 FDATool的工具条第4章 仿真结果及结果分析4.1 低通数字滤波器设计结果1冲击响应如图4-1所示:图4-1低通数字滤波器冲击响应2幅频响应如图4-2所示:图4-2低通数字滤波器幅频响应3滤波前后结果如图4-3所示:图4-3滤波前后的波形4.2 高通数字滤波器设计结果1冲击响应如图4-4所示:图4-4高通数字滤波器冲击响应2幅频响应如图4-5所示:图4-5高通数字滤波器幅频响应3滤波前后结果如图4-6所示:图4-6滤波前后的波形4.3 带通数字滤波器设计结果1冲击响应如图4-7所示:图4-7带通数字滤波器的冲击响应2幅频响应如图4-8所示:图4-8带通数字滤波器的幅频响应3滤波前后结果如图4-9所示:图4-9滤波前后的波形4.4 带阻数字滤波器的设计结果1冲击响应如图4-10所示:图4-10带阻数字滤波器的冲击响应2幅频响应如图4-11所示:图4-11带阻数字滤波器的幅频响应3.滤波前后结果如图4-12所示:图4-12滤波前后的波形4.5 FIR滤波器的性能分析从上面的设计结果可以看出,通过利用最小二乘法所设计的 FIR数字滤波器可以分析出 FIR 数字滤波器的性能特点: 1从滤波器的频率响应图可以看出 ,滤波器的阶数越高 ,滤波器的实际频率响应越接近期望的频率响应。2从滤波前后的信号及其幅频特性曲线可以看出 ,滤波器的阶数越高 ,滤波器的滤波效果越好 ,即滤除干扰信号的能力越强。3从滤波前后的信号及其相频特性曲线可以看出 ,滤波器的输出信号相对于其输入信号(即原信号产生相位延迟)。4随着滤波器阶数的升高 ,数据的计算量大幅增加 ,但滤波器幅频特性的改善并不十分明显。另外,FIR滤波器的幅度特性由于加了窗口函数,相对于理想特性发生了如下变化:1.使理想特性不连续的边沿加宽,形成了一个过渡带,过渡带宽取决于窗口函数主瓣宽度。2在截止频率两旁出现最大、最小肩峰点,在最大、最小肩峰值两侧形成长长的余振。3这种滤波器实际的幅频特性,最大肩峰可达理想矩形幅度的8.95。随着N值增加过渡带变窄,波动频率也跟着增加,虽然总的幅度有所减少,但截止频率附近的肩峰并不减少,而只能是随着N值的增加,肩峰被限制在愈来愈小的范围内,使肩峰宽度变窄16。造成肩峰的根本原因是截短导致的吉布斯效应(Gibbc)。图4-13 矩形窗口形状综上所述,要改善窗口形状有两种方法,一是尽可能的减少窗口函数中的旁瓣,使能量尽可能集中在主瓣内,这样可以减少尖峰、余振、提高阻带衰减;二是尽可能使主瓣宽度变窄,以获得较陡的过渡带,但通常情况下这两种方法难兼得,往往是增加主瓣宽度去换去旁瓣抑制。结 论本次设计我们采用最小二乘法来对FIR数字滤波器进行优化设计,并在MATLAB平台下对有限长冲击响应数字滤波器进行仿真设计,来验证最理想的滤波效果。在MATLAB环境下,数字滤波器的设计已变得非常简单和高效率,利用MATLAB的强大运算功能,基于MATLAB信号处理工具箱(Signal Processing Toolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。在设计过程中可以对比滤波器特性,随时更改参数,以达到滤
展开阅读全文