我想用一个比移动平均滤波器的抽头长度低得多的 IIR 滤波器来近似一个移动平均滤波器。最优性应指脉冲响应的范数(直至总增益的变化)。理想情况下,我还想将脉冲响应限制为单调的(即没有波纹),但我担心这个要求已经完全限制了滤波器。如果是这样的话,我可能愿意反过来采取一些涟漪以获得更剧烈的滚降。
移动平均滤波器的最优阶 IIR /AR 逼近nn
我可以向您展示 FIR 移动平均滤波器的一些低阶 IIR 近似值。在下图中,您会看到(无限)脉冲响应,它们近似于长度为的移动平均值。滤波器阶数分别为、和,它们都以最小二乘的方式逼近所需的响应。我使用方程误差法来设计这些过滤器。只有误差而言,它也是最差的滤波器。
很难为高阶 IIR 滤波器找到好的解决方案,因为该问题是高度非线性的,并且您往往会陷入局部最小值。的过滤器顺序,我找不到任何有用的解决方案。
我应该补充一点,我只是使用了方程误差法和Prony 的方法。使用 Prony 的方法(图中未显示),如果增加分子的阶数(并使分母阶数较小),则可以使个样本等于前样本所需的脉冲响应,之后响应呈指数下降。但是这些滤波器的近似误差比图中所示的要高。
这不是一个完整的答案。它探索了一些基本的近似值。
对于长达 600 个样本的移动平均值,将连续时间滤波器的脉冲响应视为所需离散时间滤波器的近似值是有益的。让我们将boxcar 函数作为理想的期望脉冲响应,标准化为宽度为 1,跨越和高度为 1。实际和理想脉冲响应之间差异范数的平方可以相同地计算通过平方误差和在域上积分来从脉冲响应或频率响应。
一阶滤波器的脉冲响应是一个右侧指数函数,具有三个参数:开始、衰减率和高度。根据中心极限定理,无限数量的此类滤波器级联的极限脉冲响应是一个高斯函数。高斯函数也有三个参数:中心、宽度和高度。猜测起始和中心参数,然后在数值上最小化时域范数的平方,给出脉冲响应:
对于从开始且范数的平方为的指数函数和
对于中心在和更好的范数的高斯函数。
图 1. 无限阶滤波器(蓝色)脉冲响应和 boxcar 函数(黑色虚线)的一阶(红色)和极限形状。
在离散时间实现中,高斯脉冲响应的左侧尾部可以在没有计算惩罚的情况下被移除,从而消除其对总误差的贡献。
(更新:我刚刚意识到这个涵盖 CIC 结构的第一部分基本上是 Hilmar 已经回答的内容——我会留下这个,因为它提供了更多的图形和细节,以防他对任何人有帮助,但它确实是一样的回答)
这可能不是最佳的,尽管涉及反馈结构,但它严格来说不是 IIR,但要指出级联积分器 - 梳状结构用于实现 boxcar 移动平均滤波器的效率 - 重要的是结果如何精确匹配而不是近似值. 因此,一个 600 抽头的移动平均滤波器可以在 601 采样延迟后加一个累加器后简单地通过一个减法来实现。
当涉及重采样时,这些结构非常流行(通常在移动平均之后,不再需要更高的输入采样率,而较低的输出采样率会更有效)。
对于这些结构中的每一个,从 Z 变换很容易证明等效性。具体到图中的示例结构:
累加器的 Z 变换为:
梳状(延迟和减法)滤波器的 Z 变换为:
移动平均滤波器的 Z 变换为:
合并确认等价:
作为移动平均滤波器的真正 IIR 替代方案,我最喜欢的另一个是指数加权移动平均滤波器,其中假设有足够的位精度,可以通过使用接近 1 的 alpha 来实现非常紧凑(换句话说,有效长延迟)的滤波。下图展示了这一点:
在固定精度结构中,指数加权移动平均滤波器框图中显示的两个操作的顺序非常重要!在大多数情况下,当处理固定精度时,最好让数字滤波器先增大信号,然后在累加后缩小。这也解释了扩展精度累加器的动机 - 显示的累加器需要设计有足够的精度,以防止选择的给定值的任何溢出(无限求和恒等式在这种情况下可用于确定最坏情况的最大值;在所示示例中导致或 100,所以在这种情况下,我们需要添加累加器中的 7 位)。从求和恒等式中还可以清楚地看出,缩放项本身是如何确定的,使得结构的增益为 1。这些操作的顺序与在模拟系统中将放大器放在衰减器之前的原因没有什么不同以获得对于那些熟悉的人来说,最好的噪声系数,同时注意削波和最大输入信号。
取决于您的应用程序。移动平均滤波器是一种低通滤波器,具有许多波瓣,并且阻带抑制非常差。根据您的具体要求,您最好做一个简单的巴特沃斯低通滤波器。
如果您担心执行周期,如果您使用矩形窗口,则有一种非常有效的方法来实现它。假设你的窗口长度是 L 你可以简单地做