我很难理解 IIR 中的“无限”在实践中的含义。理论上脉冲响应用于反馈。如果这种反馈永远不会结束,如何生成输出?
IIR过滤器无限是什么意思?
要回答这个问题,你必须知道“冲动”和“反应”是什么意思......
“脉冲”是一个简单的脉冲。在数字上,它将是一个具有最大值的样本,而在它之前和之后的所有其他样本都将为零。如果你听这个,你会听到像爆竹或鞭炮这样的声音。
“响应”是滤波器(或其他东西)的输出被赋予脉冲。
例如,你可以通过进入房间,做一个简单的拍手,听回声来听“房间的冲动反应”。需要一些练习才能使拍手尽可能“尖锐”。获得滤波器的脉冲响应的方法是相同的,但不是拍手,而是使用简单的脉冲,而不是房间,而是使用滤波器。
如果您查看滤波器或房间的脉冲响应,您会看到输出在脉冲之后一段时间内摆动(有时它也会在之前摆动)。在房间里,你听到这种摆动作为回声。在滤波器中,这种摆动与滤波器的频率和相位响应直接相关。在房间里,你听到回声的时间称为“混响时间”——滤波器没有对应的术语,但它是脉冲响应的一部分。
现在,FIR 滤波器(有限脉冲响应)是有限的,因为脉冲响应时间受数学限制。脉冲响应时间在数学上不可能超过滤波器中的抽头数 - 因此它是有限的。
另一方面,IIR 滤波器在脉冲响应时间方面没有这种数学限制。如果给定无限的数学精度,IIR 滤波器可以永远摆动输出。当然,在实际意义上,它永远不会永远持续下去,因为在某些时候摆动变得小于所使用的数学精度,因此消失了。
脉冲响应是滤波器的特征。在 FIR 滤波器的情况下,脉冲响应为您提供滤波器系数的直接图像。脉冲是具有最大幅度的单个样本,之前和之后的所有样本都为零。(这是狄拉克脉冲的数字等价物。)
在脉冲发生时,它的值乘以 \$b_0\$(见下图)。其他样本为零,因此输出 \$y\$ 等于 \$b_0\$(我假设脉冲的最大值为 1)。一个样本之后,脉冲移动了一个 \$z^{-1}\$ 块并乘以 \$b_1\$。同样,所有其他值都为零,因此输出为 \$b_1\$。等等。当脉冲通过滤波器移动时,您会在输出处获得 \$b_i\$ 的连续值。在 N 个采样后,脉冲移出滤波器,输出再次变为零。
对于 IIR 滤波器,从脉冲响应中导出滤波器系数并不那么明显。
IIR
在 IIR 滤波器(部分)中,处理后的信号被反馈到输入端。这意味着总会有一些残留的信号循环。然而大多数时候,这部分信号会越来越小,最终为零,但理论上它永远不会完全消失。下面的框图显示了一个双二阶滤波器,它是 IIR 滤波器的常用实现。左分支采用(延迟)输入值,右分支使用(延迟)输出值。(一个 \$z^{-1}\$ 块代表 1 个样本延迟。双二阶通常是级联的。
另一方面,FIR FIR 滤波器具有从输入到输出的线性路径。在 N 个样本之后,输入信号(如狄拉克脉冲)将被移出,这就是它的结束。
FIR 滤波器本质上是稳定的,而 IIR 滤波器则不一定。
有两大类数字滤波器,无限冲激响应 (IIR) 和有限冲激响应 (FIR)。从广义上讲,IIR 滤波器是基于方程的,而 FIR 滤波器是基于表的。
IIR 滤波器更像现实世界的模拟滤波器。例如,考虑一个简单的指数衰减,就像从 RC 模拟低通滤波器中得到的一样。对阶跃输入的输出响应是一个越来越接近输入的指数。请注意,这个指数实际上从未到达输出,只是足够接近以至于我们不关心或无法测量误差。从这个意义上说,这样的过滤器是无限的。IIR 滤波器具有相同的特性。
非常常见的单极低通 IIR 滤波器可以表示为:
过滤 <-- 过滤 + FF(新 - 过滤)
这意味着每次迭代时,如果将输出移动到输入的距离的固定分数(FF,“过滤器分数”)。当 FF = 1/2 时,这很容易可视化。如果一切都是 0 并且输入突然变为 1 并停留在那里(一个单位步长),那么输出将是 1/2、3/4、7/8、15/16 等。这是一个无限级数。最终该值将变得如此接近 1,以至于它表示为 1,因为计算机中的数字值没有无限精度。
FIR 滤波器的工作原理完全不同。输入信号的一个有限的最近片段被保存,每个保存的值乘以不同的系数,然后将所有结果相加以使该迭代的滤波器输出。下一次迭代最旧的保存值被丢弃,其他的被移动一个旧的插槽,新的输入被放入空出的插槽中。然后将新保存的片段乘以系数等。这个过程称为“卷积”,系数表通常称为滤波器内核。通过对系数进行创意,可以使用这种滤波器完成一些花哨和有用的事情。这本身就是一个完整的话题,我现在不会讨论。然而,由于输入的有限片段存储在内存中,输入信号的任何部分只能在有限时间内影响输出。一旦输入样本移出存储片段的末尾,它就消失了,不再对输出产生任何影响。
有整本书都是关于这些东西的,你可以花几个学期的大学课程来深入研究。希望我的 30 秒概述足以回答您的问题。
还没有提到的一点是,IIR 滤波器可以进一步细分为两种风格:那些可以对阶段进行排序,这样每个阶段完全依赖于它自己的先前值和早期阶段的值,以及那些阶段无法排名(因为两个或多个阶段相互依赖)。FIR 滤波器中的阶段可以参考其他阶段的先前输出,前提是它们可以按照前一种 IIR 风格进行排序,并且没有阶段参考自己的先前输出。
如果可以对 IIR 滤波器中的级进行排序,并且如果给定级的自反馈系数的总幅度小于 1,则可以保证 IIR 滤波器是稳定的。例如,如果一个阶段包括来自前几个阶段的一定量的信号,加上该阶段之前值的一半和之前值的 1/4,再减去之前值的 1/8,则自反馈将是 7/8,因此如果没有来自较低阶段的进一步输入,自我反馈的贡献幅度将在每次迭代中减少 12.5%。