模拟有源滤波器设计的MATLAB实现

模拟低通滤波器的设计指标为:通带边界频率?p,阻带边界频率?s,通带波纹Rp(dB)、阻带衰减Rs(dB)。

当???p时

H?j???10?Rp20 Rp??10lgH?j?? (12)

2以截止频率?c(幅值下降3dB)为1,化?为相对?c的相对频率式可写成:

??1?Rp??20lg???1????????c????????,则上?c

????2N (13)

2

同理,当???s时,H?j???10?Rs??10lgH?j?? ????1?? (14) Rs??20lg?2N?????1????????s?????

?110Rs10?1N???p?2lg??????s?

式中,N应向上取整,则N为该滤波器的最小阶数。?c表示为:

lg10Rs20综合上面两式可得:

??Rp10?????c?或

2N?10?pRp10?1?

?c?3.4.2 滤波器最小阶数选择函数

2N?10?sRs10?1? (15)

上面给出了Butterworth滤波器的最小阶数和截止频率的选择公式及程序。其实MATLAB工具箱中运用滤波器的最小阶数选择公式给出了滤波器最小阶数选择函数。几种滤波器最小阶数的选择函数如下:

[n,wc]=buttord(wp,ws,Rp,Rs, 's'); Butterworth 滤波器 [n,wc]=cheb1ord(wp,ws,Rp,Rs, 's'); Chebyshev I 滤波器 [n,wc]=cheb2ord(wp,ws,Rp,Rs, 's'); Chebyshev II 滤波器 [n,wc]=ellipord(wp,ws,Rp,Rs, 's'); Elliptic 滤波器

word文档 可自由编辑

式中,wp为通带边界频率,ws为阻带边界频率,单位为rad/s。Rp,Rs分别为通带波纹和阻带衰减,单位为dB。二者分别表示通带内的最大允许幅值损失和阻带下降的分贝数。's'表示模拟滤波器(缺省时,该函数适用于数字滤波器);函数返回值n为模拟滤波器的最小阶数;wc为模拟滤波器的截止频率,单位为rad/s。这四个函数适用于低通、高通、带通、带阻滤波器。

若wpws时对应于高通模拟滤波器,对于带通和带阻滤波器存在两个过渡带,wp和ws均应该为含有两个元素的向量,分别表示两个过渡带的边界频率。即:wp=[通带下界频率, 通带上界频率],ws=[阻带下界频率, 阻带上界频率]。对于带通滤波器,这四个频带界线的大小排列为:阻带下界频率<通带下界频率<通带上界频率<阻带上界频率;对于带阻滤波器,这四个频带界线的大小排列为:通带下界频率<阻带下界频率<阻带上界频率<通带上界频率。这时返回值wc包括两个元素(第一个元素小于第二个元素),分别为通带和阻带之间的界线频率。函数自动判断是带通还是带阻滤波器。

3.5 模拟滤波器的性能测试

滤波器设计好之后,一般要进行各方面的测试。在正式设计滤波器之前,我们先介绍如何测试滤波器的性能。对于模拟滤波器,在本章第二节我们已采用函数freqs来求模拟滤波器的频率响应,这里我们详细介绍该函数,若其调用格式为:

?h?,w????freqs(b,a?,n??)

式中,b,a分别为模拟滤波器传递函数分子和分母多项式系数; h为对应频率点的传递函数值。上面的表示中,[,w]和[,n]表示可有可无的参数,本书中的该类表示均为可有可无的参数, 由用户根据需要确定。w为频率点的值,n为频率点数。若n=128,则用128个频率点来给出此模拟滤波器的频率特性(给定频率点的传递函数值),缺省时为200。若该函数不写输出变量,则执行后绘出该滤波器的幅频响应和相位响应图。此函数模拟滤波器的传递函数形式为:

B(s)b(1)snb?b(2)snb?1???b(nb?1) H(s)? ?nana?1A(s)a(1)s?a(2)s???a(na?1)MATLAB工具箱还提供了两个函数abs和angle,由频率响应Hej?求幅频响应H?ej??和相频响应?Hej?。其中angle的输出单位为rad。可采用rad2deg函数转化为度。另外注意函数的幅频响应经常用分贝(dB)来表示。求出的幅频响应H?ej??后,通过下式转换为分贝:20log10Hej?(dB)。

我们知道,除了用传递函数描述滤波器特性外,还可用脉冲(冲激)响应来描述滤波器,因为在模拟滤波器中,脉冲响应与传递函数是Laplace变换对。此外还可以用阶跃响应(输入一个阶跃时系统的输出)来描述滤波器特性。下面我们

word文档 可自由编辑

????????

介绍在MATLAB中如何得到模拟滤波器的脉冲响应和阶跃响应。

将滤波器的传递函数表示成分子和分母多项式系数的形式,如分子和分母多项式的系数为[b,a],则在MATLAB中用H=[tf(b,a)]来表示此模拟滤波器,采用[[y,t]=]impulse(H)给出该系统的模拟脉冲响应。采用[[y,t]=]step(H)来得到该系统的阶跃响应。这两个函数与freqs一样,若没有输出则程序自动绘图模拟该滤波器的脉冲响应或阶跃响应。输出值y,t分别为该滤波器的脉冲响应或阶跃响应及其对应的时间序列。

另外,我们还可以运用一个输入信号模拟该滤波器的输出。若给定滤波器的输入值序列和对应的时间序列为u,t,则系统的输出可用y=lsim(H,u,t)来模拟, y为对应t的输出。若该函数没有输出变量则程序自动绘图显示。

3.6 频 率 变 换

模拟原型滤波器(下一章将讲到)均是截止频率为1的滤波器,在实际设计中是很难遇到的,然而它是设计其他各类滤波器的基础。我们通常遇到的是截止频率任意的低通滤波器、高通滤波器、带通滤波器和带阻滤波器。如何由低通原型模拟滤波器设计这些滤波器呢?这就要用到我们今天要讲的频率变换。所谓频率变换是指各类滤波器(低通、高通、带通、带阻)和低通滤波器原型的传递函数中频率自变量之间的变换关系。通过频率变换,我们可以从模拟低通滤波器原型获得模拟的低通滤波器、高通滤波器、带通滤波器和带阻滤波器,再借助于s域至z域的变换关系又可以设计各类后面所讲的无限冲激响应数字滤波器,这是滤波器设计的重要方法之一。 3.6.1 频率变换工具函数

MATLAB信号处理工具箱有lp2lp,lp2hp,lp2bp,lp2bs四个频率变换函数。下面分别叙述其使用方法及各参量的意义。

(1)函数lp2lp用于实现用低通模拟原型滤波器至低通滤波器的频率变换,调用格式为:

[bt,at]?lp2lp(b,a,w0)

其中,a,b为模拟原型滤波器的分母和分子多项式的系数,?0为低通滤波器所期望的截止频率(rad/s),若给定的单位为Hz,应乘以2?。bt,at为返回的低通滤波器的分母和分子多项式的系数。该函数将模拟原型滤波器传递函数模拟原型执行下面变换:

H(s)?H(p)p??s0

式中,H(p)为低通原型滤波器传递函数,H(s)为低通滤波器传递函数。该项操作可以执行模拟原型滤波器由截止频率为1到指定截止频率的变换,其原理讨论

word文档 可自由编辑

以超出本课程的范围,可参看其他信号处理参考书。

(2)函数lp2hp用于实现由低通模拟滤波器至高通滤波器的频率变换。调用格式:

[bt,at]?lp2hp(b,a,w0)

式中,?0为高通模拟滤波器所期望的截止频率(rad/s),若给定的频率单位为Hz,应乘以2?。该函数将模拟原型滤波器传递函数执行下面变换:

调用格式:

H(s)?H(p)p??0s

(3)函数lp2bp用于实现由低通模拟原型滤波器至带通滤波器的频率变换。

[bt,at]?lp2bp(b,a,w0)

式中,?0为带通滤波器的中心频率(rad/s),Bw为带通滤波器带宽(rad/s)。而

?0??1?2,Bw??2??1 式中,?1为带通滤波器的下边界频率,?2为带通滤波器上边界频率。若给定的边界频率为Hz需乘以2?。

该函数将模拟原型滤波器传递函数执行下面变换运算:

?s????1?0??0???p?sBw2H(s)?H(p)?0

(4)函数lp2bs用于实现由低通模拟原型滤波器至带阻滤波器的频率变换。

调用格式:

[bt,at]?lp2bs(b,a,w0,B?)

式中,?0为带阻滤波器的中心频率(rad/s),Bw为带阻滤波器带宽(rad/s)。而

?0??1?2,Bw??2??1 式中, ?1为带阻滤波器的下边界频率,?2为带阻滤波器上边界频率。若给定的边界频率为Hz需乘以2?。

该函数将模拟原型滤波器传递函数执行下面变换运算:

sH(s)?H(p)p??0?0???1??2

注意:输出的带阻滤波器和带通滤波器是滤波器原型阶数的2倍。

Bw?s????0word文档 可自由编辑

联系客服:779662525#qq.com(#替换为@)