IIR滤波器的设计
IIR和FIR滤波器
IIR滤波器相对于FIR滤波器的主要优点是,它们通常满足给定的一组规格,且比相应的FIR滤波器的滤波器阶数低得多。虽然IIR滤波器有非线性相位,数据处理在MATLAB®软件通常是“脱机”执行的,也就是说,在过滤之前,整个数据序列是可用的。这允许非因果的零相位滤波方法(通过<一个href="//www.ru-cchi.com/help/signal/ref/filtfilt.html">filtfilt
函数),消除了IIR滤波器的非线性相位畸变。
经典的IIR滤波器
经典的IIR滤波器,巴特沃斯,切比雪夫I型和II型,椭圆型和贝塞尔型,都以不同的方式接近理想的“砖墙”滤波器。
该工具箱提供了在模拟和数字领域(除了贝塞尔,它只支持模拟情况)以及低通、高通、带通和带阻配置中创建所有这些类型的经典IIR滤波器的功能。对于大多数滤波器类型,您还可以根据通带和阻带衰减以及过渡宽度(s)找到适合给定滤波器规格的最低滤波器顺序。
其他IIR滤波器
直接滤波器设计功能<一个href="//www.ru-cchi.com/help/signal/ref/yulewalk.html">yulewalk
找到一个滤波器的幅值响应近似于一个指定的频率响应函数。这是一种创建多带带通滤波器的方法。
您也可以使用参数化建模或系统识别功能来设计IIR滤波器。这些函数在<一个href="//www.ru-cchi.com/help/signal/ug/parametric-modeling.html" class="a">参数化建模一个>.
广义巴特沃斯设计函数<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
在本节中讨论了什么<一个href="//www.ru-cchi.com/help/signal/ug/iir-filter-design.html" class="intrnllnk">广义巴特沃斯滤波器设计一个>.
IIR滤波方法综述
下表总结了工具箱中的各种筛选器方法,并列出了可用于实现这些方法的函数。
工具箱筛选方法和可用函数
过滤方法 | 描述 | 过滤功能 |
---|---|---|
模拟原型 |
利用经典低通原型滤波器在连续(拉普拉斯)域中的极点和零点,通过频率变换和滤波器离散得到一个数字滤波器。 |
完整的设计功能:<一个href="//www.ru-cchi.com/help/signal/ref/besself.html"> 订单估计函数:<一个href="//www.ru-cchi.com/help/signal/ref/buttord.html"> 低通模拟原型函数:<一个href="//www.ru-cchi.com/help/signal/ref/besselap.html"> 频率变换功能:<一个href="//www.ru-cchi.com/help/signal/ref/lp2bp.html"> 过滤器离散化功能:<一个href="//www.ru-cchi.com/help/signal/ref/bilinear.html"> |
直接设计 |
通过近似分段线性幅值响应,直接在离散时域设计数字滤波器。 |
|
广义设计巴特沃斯 |
设计零比极点多的低通巴特沃斯滤波器。 |
|
参数化建模 |
找到一个数字滤波器,近似于规定的时间或频域响应。(有关参数化建模工具的广泛集合,请参阅系统识别工具箱™文档。) |
时域建模功能:<一个href="//www.ru-cchi.com/help/signal/ref/lpc.html"> 频域建模功能:<一个href="//www.ru-cchi.com/help/signal/ref/invfreqs.html"> |
基于模拟原型的经典IIR滤波器设计
该工具箱提供的主要IIR数字滤波器设计技术是基于经典低通模拟滤波器到其数字等效的转换。以下部分描述如何设计过滤器并总结受支持的过滤器类型的特征。看到<一个href="//www.ru-cchi.com/help/signal/ug/special-topics-in-iir-filter-design.html" class="a">IIR滤波器设计专题一个>详细步骤介绍滤波器的设计过程。
完成经典IIR滤波器设计
您可以使用滤波器设计函数轻松地创建具有低通、高通、带通或带阻配置的任何顺序的滤波器。
滤波器设计功能
过滤器类型 |
设计功能 |
---|---|
贝塞尔(模拟) |
|
巴特沃斯 |
|
切比雪夫型 |
|
切比雪夫II型 |
|
椭圆 |
|
默认情况下,这些函数都返回一个低通过滤器;你只需要指定你想要的截止频率,Wn
标准化单位,奈奎斯特频率为1hz)。对于高通滤波器,请添加“高”
函数的参数列表。对于带通或带阻滤波器,指定Wn
作为包含通带边缘频率的双元向量。附加“停止”
用于配置带停。
下面是一些数字滤波器的例子:
[b] =黄油(5,0.4);%巴特沃斯低通滤波器[b,a] = cheby1(4,1,[0.4 0.7]);I型带通切比雪夫[b] = cheby2(0.8 6, 60岁,“高”);高速切比雪夫型。[b,a] = ellip(3,1,60,[0.4 0.7],“停止”);% Bandstop椭圆
要设计一个模拟滤波器,也许是为了模拟,使用跟踪“年代”
并以rad/s为单位指定截止频率:
[b] =黄油(5,0.4,“年代”);模拟巴特沃斯滤波器
所有滤波器设计函数都在传递函数、零极增益或状态空间线性系统模型表示中返回一个滤波器,这取决于有多少输出参数。一般来说,你应该避免使用传递函数形式,因为四舍五入误差可能会导致数值问题。相反,使用零极增益形式,您可以使用它转换为二阶截面(SOS)形式<一个href="//www.ru-cchi.com/help/signal/ref/zp2sos.html">zp2sos
然后使用SOS形式来分析或实现您的过滤器。
请注意
对于极低的截止频率,所有经典的IIR低通滤波器都是病态的。因此,与其设计一个通带很窄的低通IIR滤波器,不如设计一个更宽的通带,并对输入信号进行decimate。
设计符合频域规格的IIR滤波器
这个工具箱提供顺序选择函数,计算满足给定要求的最小过滤器顺序。
过滤器类型 |
订单估计函数 |
---|---|
巴特沃斯 |
|
切比雪夫型 |
|
切比雪夫II型 |
|
椭圆 |
|
这些与过滤器设计功能结合在一起是很有用的。假设你想要一个带通滤波器,通带从1000到2000 Hz,停止带从两侧500hz开始,10khz采样频率,最多1db的通带波纹,和至少60db的阻止带衰减。您可以通过使用黄油
函数如下。
[n,Wn] = butter([1000 2000]/5000,[500 2500]/5000,1,60) [b,a] = butter(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来Ω=∞. 在Ω= 1.
切比雪夫I型滤波器
切比雪夫I型滤波器在整个通带上通过加入相等的波纹来最小化理想和实际频率响应之间的绝对差Rp
通带中的dB。阻带响应最大程度是平坦的。从通带到阻带的转换比巴特沃思滤波器更快。
在Ω= 1.
切比雪夫II型滤波器
切比雪夫II型滤波器在整个阻带上通过加入相等的波纹来最小化理想和实际频率响应之间的绝对差Rs
dB在阻带中。通带响应最大程度是平坦的。
阻带不像I型滤波器那样快地接近零(对于偶值滤波器阶数来说根本不接近零)n).然而,通带中没有波纹通常是一个重要的优势。 在Ω= 1.
椭圆滤波器
椭圆滤波器在通带和阻带都是等纹波的。它们通常以任何支持的过滤器类型的最低阶满足过滤器要求。给定一个过滤器顺序n,通带纹波Rp
分贝,和止带波纹Rs
在分贝中,椭圆滤波器使过渡宽度最小化。
在Ω= 1.
贝塞尔滤波器
模拟贝塞尔低通滤波器在零频率有最大的平坦组延迟,并在整个通带保持几乎恒定的组延迟。因此,经过滤波的信号保持其在通带频率范围内的波形。当模拟贝塞尔低通滤波器通过频率映射转换为数字贝塞尔低通滤波器时,它不再具有这种最大平坦性。信号处理工具箱™只支持模拟情况下的完整贝塞尔滤波器设计功能。
贝塞尔滤波器通常需要比其他滤波器更高的滤波器阶数才能达到令人满意的阻带衰减。 在Ω= 1随滤波器阶数递减n增加。
请注意
上面所示的低通滤波器是用模拟原型函数创建的<一个href="//www.ru-cchi.com/help/signal/ref/besselap.html">besselap
,<一个href="//www.ru-cchi.com/help/signal/ref/buttap.html">buttap
,<一个href="//www.ru-cchi.com/help/signal/ref/cheb1ap.html">cheb1ap
,<一个href="//www.ru-cchi.com/help/signal/ref/cheb2ap.html">cheb2ap
,<一个href="//www.ru-cchi.com/help/signal/ref/ellipap.html">ellipap
.这些函数找到an的零点、极点和增益n
适当类型的th阶模拟滤波器,截止频率为1 rad/s。完整的滤波器设计功能(<一个href="//www.ru-cchi.com/help/signal/ref/besself.html">besself
,<一个href="//www.ru-cchi.com/help/signal/ref/butter.html">黄油
,<一个href="//www.ru-cchi.com/help/signal/ref/cheby1.html">cheby1
,<一个href="//www.ru-cchi.com/help/signal/ref/cheby2.html">cheby2
,<一个href="//www.ru-cchi.com/help/signal/ref/ellip.html">ellip
)调用原型函数作为设计过程的第一步。看到<一个href="//www.ru-cchi.com/help/signal/ug/special-topics-in-iir-filter-design.html" class="a">IIR滤波器设计专题一个>获取详细信息。
要创建类似的情节,请使用n
=5
根据需要,Rp
=0.5
而且Rs
=20.
.例如,要创建椭圆滤波器图:
(z,磷、钾)= ellipap (5 0.5 20);w = logspace (1, 1, 1000);h =频率(k *聚(z),聚(p), w);semilogx (w、abs (h)、网格包含(“频率(rad / s)”) ylabel (“级”)
直接IIR滤波器设计
这个工具箱使用这个术语直接的方法描述基于离散域规范的IIR设计技术。与模拟原型方法不同,直接设计方法不受限于标准的低通、高通、带通或带阻配置。相反,这些函数设计的滤波器具有任意的(可能是多频带的)频率响应。本节讨论<一个href="//www.ru-cchi.com/help/signal/ref/yulewalk.html">yulewalk
功能,专为过滤器设计;<一个href="//www.ru-cchi.com/help/signal/ug/parametric-modeling.html" class="a">参数化建模一个>讨论了其他也可以被认为是直接的方法,如Prony的方法,线性预测,Steiglitz-McBride方法和逆频率设计。
的<一个href="//www.ru-cchi.com/help/signal/ref/yulewalk.html">yulewalk
函数通过拟合指定的频率响应设计递归IIR数字滤波器。<一个href="//www.ru-cchi.com/help/signal/ref/yulewalk.html">yulewalk
的名称反映了其寻找滤波器分母系数的方法:它找到理想的指定大小平方响应的反FFT,并使用得到的自相关函数样本求解修正的Yule-Walker方程。该声明
[b] = yulewalk (n、f m)
返回行向量b
而且一个
包含n + 1
分子和分母系数n
频率幅值特性近似于矢量的三阶IIR滤波器f
而且米
.f
为从0到1的频率点向量,其中1表示奈奎斯特频率。米
在点处是否包含指定的幅值响应的向量f
.f
而且米
可以描述任何分段线性形状的幅度响应,包括多波段响应。该函数的FIR对应函数为<一个href="//www.ru-cchi.com/help/signal/ref/fir2.html">的故事
,它还设计了一个基于任意分段线性幅值响应的滤波器。看到<一个href="//www.ru-cchi.com/help/signal/ug/fir-filter-design.html" class="a">数字滤波器设计一个>获取详细信息。
请注意,<一个href="//www.ru-cchi.com/help/signal/ref/yulewalk.html">yulewalk
不接受相位信息,也没有关于结果滤波器的最优性的声明。
设计一种多带滤波器<一个href="//www.ru-cchi.com/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] = yulewalk (10 f m);[h,w] = freqz(b,a,128) plot(f,m,w/pi,abs(h))
广义巴特沃斯滤波器设计
工具箱函数<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
使你能够设计广义巴特沃思滤波器,也就是具有不同数目的零和极点的巴特沃思滤波器。这在某些实现中是可取的,在这些实现中极点的计算成本高于零。<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
就像<一个href="//www.ru-cchi.com/help/signal/ref/butter.html">黄油
函数,除了它可以指定两个阶(分子一阶,分母一阶)而不是只有一阶。这些过滤器是最大限度地平.这意味着所得到的滤波器对于任何分子和分母阶数都是最优的,在0和奈奎斯特频率处有最大的导数数ω=π都设为0。
例如,当两种顺序相同时,maxflat
和黄油
:
[b] = maxflat (3, 3, 0.25)
a = 1.0000 -1.4590 0.9104 -0.1978
[b] =黄油(0.25)
a = 1.0000 -1.4590 0.9104 -0.1978
然而,<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
更通用,因为它允许你设计一个有更多零比极点的过滤器:
[b] = maxflat(3、1、0.25)
a = 1.0000 -0.2402
第三个输入<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
是半功率频率,频率在0到1之间,大小响应为
.
也可以设计具有最大平坦特性的线性相位滤波器“符号”
选择:
maxflat (4“符号”, 0.3)
Ans = 0.0331 0.2500 0.4337 0.2500 0.0331
的完整详情<一个href="//www.ru-cchi.com/help/signal/ref/maxflat.html">maxflat
算法,参见Selesnick和Burrus<一个href="//www.ru-cchi.com/help/signal/ug/selected-bibliography.html" class="a">[2]一个>.