主要内容

IIR滤波器设计

IIR vs. FIR滤波器

IIR滤波器相对于FIR滤波器的主要优点是,它们通常满足给定的一组规格,并且比相应的FIR滤波器的过滤阶数低得多。虽然IIR滤波器具有非线性相位,MATLAB内的数据处理®软件通常是“脱机”执行的,也就是说,在过滤之前,整个数据序列都是可用的。这允许一种非因果的零相位滤波方法(通过<一个href="//www.tatmou.com/in/in/help/signal/ref/filtfilt.html">filtfilt函数),消除了IIR滤波器的非线性相位畸变。

经典IIR滤波器

经典的IIR滤波器,巴特沃斯,切比雪夫类型I和II,椭圆和贝塞尔,都以不同的方式近似理想的“砖墙”滤波器。

该工具箱提供了在模拟和数字域(贝塞尔除外,只支持模拟情况)以及低通、高通、带通和带阻配置中创建所有这些类型的经典IIR滤波器的函数。金宝app对于大多数滤波器类型,您还可以根据通带和阻带衰减以及过渡宽度找到符合给定滤波器规格的最低滤波器顺序。

其他IIR滤波器

直接过滤设计功能<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk找到一个滤波器的幅度响应近似于指定的频率响应函数。这是创建多带通滤波器的一种方法。

您还可以使用参数化建模或系统识别函数来设计IIR滤波器。中讨论了这些函数<一个href="//www.tatmou.com/in/in/help/signal/ug/parametric-modeling.html" class="a">参数化建模

广义巴特沃斯设计函数<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat是本节所讨论的<一个href="//www.tatmou.com/in/in/help/signal/ug/iir-filter-design.html" class="intrnllnk">广义巴特沃斯滤波器设计

IIR滤波方法综述

下表总结了工具箱中的各种筛选方法,并列出了可用于实现这些方法的函数。

工具箱筛选方法和可用函数

过滤方法 描述 过滤功能

模拟原型

利用连续(拉普拉斯)域中经典低通原型滤波器的极点和零点,通过频率变换和滤波器离散化得到一个数字滤波器。

设计功能齐全:<一个href="//www.tatmou.com/in/in/help/signal/ref/besself.html">besself,<一个href="//www.tatmou.com/in/in/help/signal/ref/butter.html">黄油,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby1.html">cheby1,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby2.html">cheby2,<一个href="//www.tatmou.com/in/in/help/signal/ref/ellip.html">ellip

阶估计函数:<一个href="//www.tatmou.com/in/in/help/signal/ref/buttord.html">buttord,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb1ord.html">cheb1ord,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb2ord.html">cheb2ord,<一个href="//www.tatmou.com/in/in/help/signal/ref/ellipord.html">ellipord

低通模拟原型函数:<一个href="//www.tatmou.com/in/in/help/signal/ref/besselap.html">besselap,<一个href="//www.tatmou.com/in/in/help/signal/ref/buttap.html">buttap,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb1ap.html">cheb1ap,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb2ap.html">cheb2ap,<一个href="//www.tatmou.com/in/in/help/signal/ref/ellipap.html">ellipap

频率变换函数:<一个href="//www.tatmou.com/in/in/help/signal/ref/lp2bp.html">lp2bp,<一个href="//www.tatmou.com/in/in/help/signal/ref/lp2bs.html">lp2bs,<一个href="//www.tatmou.com/in/in/help/signal/ref/lp2hp.html">lp2hp,<一个href="//www.tatmou.com/in/in/help/signal/ref/lp2lp.html">lp2lp

滤波器离散化函数:<一个href="//www.tatmou.com/in/in/help/signal/ref/bilinear.html">双线性,<一个href="//www.tatmou.com/in/in/help/signal/ref/impinvar.html">impinvar

直接设计

直接在离散时域中通过近似分段线性幅值响应设计数字滤波器。

yulewalk

广义巴特沃斯设计

设计零比极多的低通巴特沃斯滤波器。

maxflat

参数化建模

找到一个数字滤波器,近似于规定的时间或频域响应。(有关参数化建模工具的广泛集合,请参阅系统识别工具箱™文档。)

时域建模功能:<一个href="//www.tatmou.com/in/in/help/signal/ref/lpc.html">lpc的,<一个href="//www.tatmou.com/in/in/help/signal/ref/prony.html">普龙尼,<一个href="//www.tatmou.com/in/in/help/signal/ref/stmcb.html">stmcb

频域建模功能:<一个href="//www.tatmou.com/in/in/help/signal/ref/invfreqs.html">invfreqs,<一个href="//www.tatmou.com/in/in/help/signal/ref/invfreqz.html">invfreqz

经典IIR滤波器的模拟原型设计

该工具箱提供的主要IIR数字滤波器设计技术是基于将经典低通模拟滤波器转换为数字等效滤波器。以下部分描述如何设计筛选器,并总结受支持的筛选器类型的特征。金宝app看到<一个href="//www.tatmou.com/in/in/help/signal/ug/special-topics-in-iir-filter-design.html" class="a">IIR滤波器设计专题关于滤波器设计过程的详细步骤。

完整的经典IIR滤波器设计

您可以使用滤波器设计函数轻松地创建具有低通、高通、带通或带阻配置的任何顺序的滤波器。

滤波器设计功能

过滤器类型

设计功能

贝塞尔(仅模拟)

[b] =<一个href="//www.tatmou.com/in/in/help/signal/ref/besself.html">besself(n, n,选项

[z,p,k] = besself(n,Wn,选项

[A, B, C, D] = besself (n, n,选项

巴特沃斯

[b] =<一个href="//www.tatmou.com/in/in/help/signal/ref/butter.html">黄油(n, n,选项

[z,p,k] =黄油(n,Wn,选项

[A,B,C,D] =黄油(n,Wn,选项

切比雪夫I型

[b] =<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby1.html">cheby1(Wn n, Rp选项

[z,p,k] = cheby1(n,Rp,Wn,选项

[A,B,C,D] = cheby1(n,Rp,Wn,选项

切比雪夫II型

[b] =<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby2.html">cheby2(n, Rs、Wn选项

[z,p,k] = cheby2(n,Rs,Wn,选项

[A,B,C,D] = cheby2(n,Rs,Wn,选项

椭圆

[b] =<一个href="//www.tatmou.com/in/in/help/signal/ref/ellip.html">ellip(n, Rp, Rs、Wn选项

[z,p,k] = ellip(n,Rp,Rs,Wn,选项

[A,B,C,D] = ellip(n,Rp,Rs,Wn,选项

默认情况下,这些函数都返回一个低通滤波器;你只需要指定你想要的截止频率,Wn,以标准化单位使奈奎斯特频率为1hz)。对于高通滤波器,请添加“高”到函数的参数列表。对于带通或带阻滤波器,请指定Wn作为包含通带边缘频率的两元向量。附加“停止”用于带阻配置。

下面是一些数字滤镜的例子:

[b,a] =黄油(5,0.4);%低通巴特沃斯[b,a] = cheby1(4,1,[0.4 0.7]);带通切比雪夫型[b,a] = cheby2(6,60,0.8,“高”);%高速切比雪夫II型[b,a] = ellip(3,1,60,[0.4 0.7],“停止”);%带阻椭圆

为了设计一个模拟滤波器,也许是为了模拟,使用拖尾“年代”并以rad/s为单位指定截止频率:

[b,a] =黄油(5,0.4,“年代”);%模拟巴特沃斯滤波器

所有滤波器设计函数都以传递函数、零极增益或状态空间线性系统模型表示形式返回一个滤波器,这取决于有多少输出参数。一般来说,你应该避免使用传递函数形式,因为舍去误差会导致数值问题。相反,使用零极增益形式,您可以使用它将其转换为二阶分段(SOS)形式<一个href="//www.tatmou.com/in/in/help/signal/ref/zp2sos.html">zp2sos然后使用SOS表单来分析或实现您的过滤器。

请注意

所有经典的IIR低通滤波器对于极低的截止频率都是病态的。因此,与其设计一个通带非常窄的低通IIR滤波器,不如设计一个更宽的通带,并对输入信号进行decimate。

根据频域规格设计IIR滤波器

此工具箱提供了顺序选择函数,用于计算满足给定需求集的最小筛选顺序。

过滤器类型

阶估计函数

巴特沃斯

[n,Wn] =黄油(Wp,Ws,Rp,Rs)

切比雪夫I型

[n,Wn] = cheb1ord(Wp,Ws,Rp,Rs)

切比雪夫II型

[n,Wn] = cheb2ord(Wp,Ws,Rp,Rs)

椭圆

[n,Wn] = ellipord(Wp,Ws,Rp,Rs)

这些与过滤器设计函数一起使用是很有用的。假设你想要一个带通滤波器,它的通带从1000到2000hz,阻带从两侧500hz开始,采样频率为10khz,通带纹波最多为1db,阻带衰减至少为60db。方法可以满足这些规范黄油函数如下。

[n,Wn] =黄油([1000 2000]/5000,[500 2500]/5000,1,60)[b,a] =黄油(n,Wn);
n = 12 Wn = 0.1951 0.4080

给出了满足相同要求的椭圆滤波器

(n, Wn) = ellipord((1000 2000) / 5000(500 - 2500) / 5000, 1、60)[b] = ellip (60 n 1, Wn);
n = 5 Wn = 0.2000 0.4000

这些功能也适用于其他标准频带配置,以及模拟滤波器。

经典IIR滤波器类型的比较

工具箱提供了五种不同类型的经典IIR滤波器,每种都在某种程度上是最优的。本节展示了每种模拟原型的基本形式,并总结了主要特征。

巴特沃斯滤波器

巴特沃斯滤波器在模拟频率下提供了理想低通滤波器响应的最佳泰勒级数近似Ω = 0而且Ω =∞;任何订单N时,大小平方响应为2N- 1这些位置的导数为零(最大限度地平Ω = 0而且Ω =∞).响应总体上是单调的,从Ω = 0Ω =∞ | H j Ω | 1 / 2 Ω = 1

切比雪夫I型滤波器

切比雪夫I型滤波器将整个通带上的理想频率响应和实际频率响应之间的绝对差异最小化Rp通带中的dB。止带响应最大程度的平坦。从通带到阻带的转换比巴特沃斯滤波器更快。 | H j Ω | 10 Rp / 20. Ω = 1

切比雪夫II型滤波器

切比雪夫II型滤波器通过合并相等的纹波,使整个阻带上的理想和实际频率响应之间的绝对差异最小化Rs阻带中的dB。通带响应是最大的平坦。

阻带不像I型滤波器那样快地趋近于零(对于偶值滤波器阶,阻带根本不趋近于零n).然而,通带中没有波纹通常是一个重要的优点。 | H j Ω | 10 Rs / 20. Ω = 1

椭圆滤波器

椭圆滤波器在通带和阻带都是等纹波的。它们通常满足任何支持的过滤器类型的最低阶的过滤器要求。金宝app给定一个过滤顺序n,通带波纹Rp在分贝,和止水带波纹Rs在分贝,椭圆滤波器最小化过渡宽度。 | H j Ω | 10 Rp / 20. Ω = 1

贝塞尔滤波器

模拟贝塞尔低通滤波器在零频率具有最大的平坦群延迟,并在整个通带保持几乎恒定的群延迟。因此,滤波后的信号在通带频率范围内保持其波形。当模拟贝塞尔低通滤波器通过频率映射转换为数字贝塞尔低通滤波器时,它就不再具有这种最大平坦性。信号处理工具箱™仅支持完整贝塞尔滤波器设计功能的模拟情金宝app况。

贝塞尔滤波器通常需要比其他滤波器更高的滤波器阶数来满足阻带衰减。 | H j Ω | < 1 / 2 Ω = 1并随着滤波阶数的增加而减小n增加。

请注意

上面所示的低通滤波器是用模拟原型函数创建的<一个href="//www.tatmou.com/in/in/help/signal/ref/besselap.html">besselap,<一个href="//www.tatmou.com/in/in/help/signal/ref/buttap.html">buttap,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb1ap.html">cheb1ap,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheb2ap.html">cheb2ap,<一个href="//www.tatmou.com/in/in/help/signal/ref/ellipap.html">ellipap.这些函数可以找到an的零点、极点和增益n具有截止频率为1 rad/s的适当类型的th阶模拟滤波器。完整的过滤设计功能(<一个href="//www.tatmou.com/in/in/help/signal/ref/besself.html">besself,<一个href="//www.tatmou.com/in/in/help/signal/ref/butter.html">黄油,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby1.html">cheby1,<一个href="//www.tatmou.com/in/in/help/signal/ref/cheby2.html">cheby2,<一个href="//www.tatmou.com/in/in/help/signal/ref/ellip.html">ellip)调用原型功能作为设计过程的第一步。看到<一个href="//www.tatmou.com/in/in/help/signal/ug/special-topics-in-iir-filter-design.html" class="a">IIR滤波器设计专题获取详细信息。

要创建类似的图,请使用n5根据需要,Rp0.5而且Rs20..例如,要创建椭圆过滤器图:

[z,p,k] = ellipap(5,0.5,20);W = logspace(-1,1,1000);H =频率(k*聚(z),聚(p),w);Semilogx (w,abs(h)), grid xlabel(“频率(rad / s)”) ylabel (“级”

直接IIR滤波器设计

这个工具箱使用这个术语直接的方法描述IIR设计技术,根据离散域的规范找到过滤器。与模拟原型方法不同,直接设计方法不受标准低通、高通、带通或带阻配置的限制。相反,这些函数设计的滤波器具有任意的,也许是多频带的频率响应。本节讨论<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk函数,专门用于过滤器设计;<一个href="//www.tatmou.com/in/in/help/signal/ug/parametric-modeling.html" class="a">参数化建模讨论了其他可能也被认为是直接的方法,如Prony的方法,线性预测,Steiglitz-McBride方法,和逆频率设计。

的<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk函数通过拟合指定的频率响应设计递归IIR数字滤波器。<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk的名字反映了它寻找滤波器分母系数的方法:它找到理想指定的平方大小响应的逆FFT,并使用得到的自相关函数样本求解修正的Yule-Walker方程。该声明

[b,a] = yulewalk(n,f,m)

返回行向量b而且一个包含n + 1分子和分母的系数n一种频幅特性近似于向量中给定频幅特性的三阶IIR滤波器f而且f为频率点的向量,取值范围为0到1,其中1代表奈奎斯特频率。一个矢量是否包含在点上的特定大小响应ff而且可以描述任何分段线性形状的幅值响应,包括多波段响应。该函数对应的FIR为<一个href="//www.tatmou.com/in/in/help/signal/ref/fir2.html">的故事,设计了基于任意分段线性幅值响应的滤波器。看到<一个href="//www.tatmou.com/in/in/help/signal/ug/fir-filter-design.html" class="a">FIR滤波器设计获取详细信息。

请注意,<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk不接受相位信息,并且没有关于结果滤波器的最优性的陈述。

设计一种多波段滤波器<一个href="//www.tatmou.com/in/in/help/signal/ref/yulewalk.html">yulewalk并绘制出指定的和实际的频率响应:

M = [0 0 1 1 0 0 1 1 0 0];F = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1];[b,a] = yulewalk(10,f,m);[h,w] = freqz(b,a,128) plot(f,m,w/pi,abs(h))

广义巴特沃斯滤波器设计

工具箱函数<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat使你能够设计广义巴特沃斯滤波器,也就是说,巴特沃斯滤波器具有不同数量的零和极点。这在某些实现中是可取的,在这些实现中,极点比零的计算成本更高。<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat就像<一个href="//www.tatmou.com/in/in/help/signal/ref/butter.html">黄油函数,除了它可以指定两个阶数(分子一阶,分母一阶)而不是一阶。这些过滤器是最大限度地平.这意味着所得到的滤波器对于任何分子和分母阶都是最优的,在0和奈奎斯特频率处的导数数量最大ωπ都设为0。

例如,当两个顺序相同时,maxflat黄油

[b,a] = maxflat(3,3,0.25)
B = 0.0317 0.0951 0.0951 0.0317 a = 1.0000 -1.4590 0.9104 -0.1978
[b,a] =黄油(3,0.25)
B = 0.0317 0.0951 0.0951 0.0317 a = 1.0000 -1.4590 0.9104 -0.1978

然而,<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat更通用,因为它允许你设计一个0多于极点的过滤器:

[b,a] = maxflat(3,1,0.25)
B = 0.0950 0.2849 0.2849 0.0950 a = 1.0000 -0.2402

第三个输入<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat半功率频率,频率在0到1之间,幅值响应为 1 / 2

方法还可以设计具有最大平坦特性的线性相位滤波器“符号”选择:

maxflat (4“符号”, 0.3)
Ans = 0.0331 0.2500 0.4337 0.2500 0.0331

的详细资料<一个href="//www.tatmou.com/in/in/help/signal/ref/maxflat.html">maxflat算法,见Selesnick和Burrus<一个href="//www.tatmou.com/in/in/help/signal/ug/selected-bibliography.html" class="a">[2]