基于dsp数字信号处理器的iir数字滤波器设计内容摘要:

器通常包括下面 5 个步骤: (1) 滤波器要求的规范。 (2) 合适的滤波器系数的计算。 (3) 用一个适当的结构来表示滤波器(实现结构)。 (4) 有限字长效应对滤波器性能的影响的分析。 (5) 用软件和 /或者硬件来实现滤波器。 这五个步骤不是必需相互独立的,它们也不是总要按照上面给出的顺序执行。 实际上经常把第二步、第三步和第四步组合在一起进行。 脉冲响应不变法 所谓脉冲响应不变法就是使数 字滤波器的脉冲响应序列 h(n)等于模拟滤波器的脉冲响应 ha(t)的采样值,即      nThthnh anTta   式中, T 为采样周期。 因此数字滤波器的系统函数 H(z)可由下式求得:        nThZnhZzH a Z[]表示对 []的内容进行 Z 变换, Z 变换的内容请参考相应的数字信号处理教材。 如果已经获得了满足性能指标的模拟滤波器的传递函数 sHa ,求与之对应的数字滤波器的传递函数 H(z)的方法是: 求模拟滤波器的单位脉冲响应 tha。     sHLth aa 1 式中,   sHL a1 表示对 sHa 的 Laplace 逆变换。 Laplace 变换内容请参考高等数学的积分变换或信号处理教材。 求模拟滤波器单位冲激响应 tha 的采样值,即数字滤波器冲激响应序列 h(n)。 对数字滤波器的冲激响应 h(n)进行 z 变换,得到传递函数 H(z)。 由上述方法推论出更直接地由模拟滤波器系统函数 sHa 求出数字滤波器系统函数H(z)的步骤是: 利用部分分式展开将模拟滤波器的传递函数 H(s)展开成:     Nk kka ps RsH 1 华东交通大学毕业设计 7 在 MATLAB 中这步可通过 residue 函数实现。 若调用 residue 函数的形式为 [R,P,K]=residue(a,b) 形式,则将下式(传递函数形式):                    121 121 11    naasnaasasa nbbsnbbsbsbsa sbsH nbnb nbnba  变换为:        121 11   MKsKsKps RsH MMNk kKa  这种形式为极点留数商向量形式,对于本节所讲的特定情况 , K 为空矩阵。 若为 [b,a]=residue(R,P,K)则为上面调用形式的反过程。 将模拟极点 pk 变换为数字极点 Tpke 即得到数字系统的传递函数     Nk Tp k zeRZH k1 11 (26) 其中 T 为采样间隔。 将 式 (26)转换为传递函数形式,在该步骤中,可采用 [R,P,K]=residue(b,a). MATLAB 中已经提供了冲激响应不变法设计数字滤波器的函数,调用格式为: [bz,az]=impinvar(b,a,Fs) 式中, b,a 为模拟滤波器分子和分母多项式系数向量; Fs 为采样频率,单位 Hz,缺省时为 1Hz。 bz,az 分别为数字滤波器分子和分母多项式系数向量。 前面已提到过,函数输入变量中的 []表示可添加也可略去的内容。 下面我们用例子说明如何使用这个函数。 脉冲响应不变法将模拟滤波器   132 232  ss ssH a变换为数字滤波器 H(z),采样周期为T=。 b=[3 2]。 a=[2 3 1]。 T=。 %模拟滤波器分子和分母多项式系数及采 样间隔 [bz1,az1]=impinvar(b,a,1/T) 程序输出为: bz1 = az1 = 在应用 脉 冲响应不变法设计数字滤波器时要注意它的特点。 脉冲响应不变法由 sTez这一基本关系得到数字角频率  和模拟角频率  满足 T 线性变换关系, T 为采样间隔。 这使得 j 轴上每隔 T2 便映射到 z 域中的单位圆一周。 如果模拟滤波器频率响应是有限带宽的话,通过变换得到的数字滤波器的频率响应非常接近于模拟滤波器的频率响应。 由于数字滤波器的频率响应 是模拟滤波器频率响应的周期延拓,因此对于高通和带阻滤波器存在混叠效应,会造成频率响应失真,因此这种方法原则上只适用于有限带宽滤波器。 对于高通、带阻等滤波器,由于它们高频成分不衰减,势必产生严重的混迭失真。 双线性变换法可以弥补这方面的不足。 双线性变换法 双线性变换法将 s 平面的整个频率轴映射到 z 域的一个频率周期中。 因此 s 平面到 z平面的映射是非线性的,其单值双线性映射关系为: sTsTzzzTs2121,11211  (27) 吴春辉:基于 DSP 的 IIR 数字滤波器的设计 8 式中, T 为采样周期。 因此若已知模拟滤波器的传递函数 sHa,将 (27)式的第一式代入 sHa即可得到数字滤波器的传递函数:    11112zzTsa sHzH 在双线性变换中,模拟角频率和数字角频率存在下面关系: 2a rc t a n2,2tan2 TT   可见,模拟角频率  和数字角频率  之间的关系是非线性的。 在 MATLAB 中,函数 bilinear 采用双线性变换法实现模拟 s 域至数字 z 域的映射,直接用于模拟 滤波器变换为数字滤波器。 其调用方式为: [zd,pd,kd]=bilinear(z,p,k,Fs) [numd,dend]=bilinear(num,den,Fs) 式中, z,p 分别为模拟滤波器零点、极点列向量; k 为模拟滤波器的增益; Fs 为采样频率,单位 Hz。 zd,pd,kd 为数字滤波器的零极点和增益。 num,den 分别为模拟滤波器传递函数分子和分母多项式系数向量,模拟滤波器传递函数具有下面的形式:                11 11   ndde nsndde nsde n nnnumsnmnumsnumsde n snumsH ndnm  numd 和 dend 分别为数字滤波器传递函数分子和分母多项式系数向量。 用双线性变换法将模拟滤波器   132 232  ss ssH a变换为数字滤波器 H(z),采样周期(间隔) T=。 %Samp6_2 b=[3 2]。 a=[2 3 1]。 T=。 %模拟滤波器分子和分母多项式的系数,采样间隔 [bz1,az1]=bilinear(b,a,1/T) %将模拟滤波器传递函数转换为数字滤波器传递函数 程序输出为: bz1 = az1 = 双线性变换法克服了脉冲响应不变法的频谱混迭问题,其幅值逼近程度好,可适用于高通、带阻等各种类型滤波器的设计。 s 域和 z 域对应关系也简单。 缺点是频率变换的非线性导致数字滤波器与模拟滤波器在幅度和频率的对应关系上发生畸变。 但一般滤波器的幅频响应具有分段常数的特点,即滤波器允许某一频段信号通过,而不允许另外频段的信号通过的特点,故变换后这一特点仍保留,影响不大。 由数字边界频率计算模拟边界频率时,不是按线性关系进行的,这就是所谓的 “ 预畸变 ”。 但如果给定预畸变频率为边界频率,经预畸变频率校正则可以保证所要设计的模拟边界频率精确映射在所要求的数字边界频率上。 滤波器的特性及使用函数 (1) freqz 对于模拟滤波器,可以用 freqs 求解滤波器的频率响应。 与之对应的函数 freqz 用于求数字滤波器的频率响应,其调用格式为: [[h,w]=]freqz(b,a,n,[’whole’])。 或 [h,f]=freqz(b,a,n,[’whole’],Fs)。 式中, b,a 为数字滤波器分子和分母多项式的系数, n 为复数频率的响应点数,为整数 ,最好为 2 的幂,缺省时为 512; Fs 为采样频率,单位 Hz。 如果给定该值,则 f 位置输出为华东交通大学毕业设计 9 频率 Hz,若没有给定,则按角频率( Angular frequency)给定 f 的频率矢量; ’whole’表示返回的频率 f 或 w 值包含 z 平面整个单位圆频率矢量,即 0~2 ;缺省时,频率 f 或 w 值包含 z 平面上半单位圆( 0~ )之间等间距 n 个点频率矢量。 h 为复频率响应; w 为 n 点频率向量(单位 rad); f 为 n 点频率向量 (Hz)。 函数返回值缺省时,绘制幅频响应和相频响应图。 该函数适用于下面形式的数字滤波器:                 nanba znaazaa znbbzbbzA zBzH     121 121 11  函数 freqz 输出的频率向量在 0~。 为了获得一个滤波器真正的相频特性图,要对相位角进行解缠绕。 为此 MATLAB 提供了一个函数 unwrap 来解决这个问题,P=unwrap(angle(H))。 (2) impz impz 用于产生数字滤波器的脉冲响应。 调用格式为: [h,t]=impz(b,a,n,Fs) 式中, b,a 分别为滤波器分子和分母多项式系数向量; n 为采样点数; Fs 为采样频率,缺省值为 1; h 为滤波器单位脉冲响应向量; t 为和 h 对应的时间向量。 当函数 输出缺省时,绘制滤波器脉冲响应图;当 n 缺省时,函数自动选择 n 值。 (3) 零极点图 滤波器的零极点位置决定了滤波器稳定性和性能,因此考察滤波器的零极点的位置是分析滤波器特性的重要方面之一。 MATLAB 信号处理工具箱提供绘制数字滤波器零极点位置图的工具 zplane,调用格式为: zplane(z,p)或 zplane(b,a) 式中, z,p 为零极点向量 (为复数 ), b,a 为滤波器分子和分母多项式的系数(为实数)。 函数在 z 平面绘出零点和极点。 极点用 ’’表示,零点用 ’o’表示。 (4) 群延迟 信号传输的不失真条 件之一为:滤波器相频特性是一条经过原点的直线,即  dt  , dt 为常数。 但一般滤波器不满足这个条件,衡量实际滤波器相位平均延迟的物理量是群延迟。 群延迟定义为信号通过滤波器的延迟随频率变化的函数,即滤波器相频特性图上切线的负斜率:      ddg  MATLAB 信号处理工具箱提供计算群延迟函数 grpdelay,调用格式为: [gd,w]=grpdelay(b,a,n,[’whole’]) [gd,f]=grpdelay(b,a,n,[’whole’],Fs) gd=grpdelay(b,a,w) gd=grpdelay(b,a,f,Fs) grpdelay 其中, gd 为群延迟;其他各项意义同函数 freqz,函数输出项缺省时,绘制群延迟图。 ’whole’参数表示绘制包括大于 Nyquist 频率的一个周期的群延迟。 (5) filter 函数用来实现数字滤波器对数据的滤波,函数的调用格式为: y=filter(b,a,x) 其中, b,a 分别为滤波器传递函数 H(z)的分子和分母多项式系数。 x 为滤波器的输入。 y 为滤波器的输出。 y 为与 x 具有相同大小的向量。 (6) filtfilt 函数实现零相位前向与后向结合的滤波。 调用格式为: y=filtfilt(b,a,x) 式中, b,a 分别为滤波器传递函数 H(z)的分子和分母多项式系数。 x 为滤波器的输入,吴春辉:基于 DSP 的 IIR 数字滤波器的设计 10 为值向量。 y 为滤波器的输出。 该函数对序列 x 进行正常的正向滤波后,将滤波后的输出翻转重新用该滤波器进行滤波,第二次滤波后的输出序列的翻转即得到零相位的滤波输出。 这样就可以把延迟后的相位校正至零。 但该函数只能用于数字滤波器, FIR 滤波器或IIR 滤波器均能使用 1。 本章小结 本章首先介绍了数字滤波器的概念、数字滤波器的原理以及数字滤波器的系统函数。 还介绍了 数字滤波器 按照 系统单位脉冲响应的长度分为两大类 ,分别是 FIR 和 IIR。 之后就介绍了数字滤波器的设计步骤和两种设计方法,分别是 脉冲响应不变法 和 双线性变换法 ,分析了两种方法的特点以供选择。 最后介绍了 MATLAB 的特性和一些函数。 华东交通大学毕业设计 11 3 MATLAB 上的 IIR 滤波器的设计与仿真 选择合适的模拟滤波器原型 第三章 已经讲到了数字滤波器的设计步骤。 首先,就是要选择一个 合适的模拟滤波器原型。 常用的模拟滤波器有四种,分别是 巴特沃斯 滤波器 、切比雪夫 I 型滤波器、 切比雪夫 II 型滤波器以及 椭圆 滤波器。 第一步就是要从这四种滤波器中选择出最符合要求。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。