移动平均滤波器的群延迟

信息处理 移动平均线 群延迟
2022-02-27 03:59:18

我已经实现了一个移动平均过滤器(在 Python 中),在其中我用值填充一个列表并将它们平均。当新值到达时,最旧的值将被删除。

现在我想知道这个过滤有多少延迟。

我正在以 1000 Hz 对传感器信号(电压)进行采样,并且我经常读到 M 值(窗口大小)的移动平均滤波器的群延迟(据我所知是延迟?)为 (M-1)/ 2.

我真的无法理解,因为:

假设我的窗口大小为 5,并且以下测量值到达我的空移动平均过滤器:

  • 6x 1 伏
  • 6x 3 伏

    |1|1|1|1|1|1|3|3|3|3|3|3|

首先,我等到我的移动平均过滤器被填充(直到第五个测量值)。

然后我得到这些平均值

|1|1|1|1|1| 1 |3|3|3|3|3|3|   1   [1,1,1,1,1]
|1|1|1|1|1|1| 3 |3|3|3|3|3|  7/5  [1,1,1,1,3] <- 3 Volt first time measured
|1|1|1|1|1|1|3| 3 |3|3|3|3|  9/5  [1,1,1,3,3]
|1|1|1|1|1|1|3|3| 3 |3|3|3| 11/5  [1,1,3,3,3]
|1|1|1|1|1|1|3|3|3| 3 |3|3| 13/5  [1,3,3,3,3]
|1|1|1|1|1|1|3|3|3|3| 3 |3| 15/5  [3,3,3,3,3] <- 3 Volt average

我预计我的延迟将是 (M-1)/2 = (5-1)/2 = 2 次测量,但在 4 次测量之后,我的移动平均滤波器中的电压为 3 伏(因此延迟 M-1)。

如果有人能解释我如何确定我的延误,我会很高兴。

4个回答

“群延迟”不是输入变化和第一个效果之间的延迟;这是一组不同频率的振荡所经历的延迟。

对于线性相位滤波器(以及您的移动平均值,其脉冲响应是对称的,是线性相位),它是单个脉冲效应的“中心”。因此,它是您看到输入更改的第一个效果和最后一个效果之间的中心。

如果您的窗口是可实现的(因果关系,并且必须是因为我们无法测量和使用未来值),您必须等待整个窗口而不是它的一半。

这是另一种看待它的方式:

群延迟(非 dsp 的人称之为“滞后”)也是平均权重的重心(COG)。对于简单移动平均线 (SMA),这些权重看起来像一个矩形(长度 M,高度 1/M),因此 SMA 的重心位于中间:这就是为什么 10 周期 SMA 会有 4.5 周期滞后( n-1)/2。另一个可能的移动平均线是加权移动平均线:在这种情况下,权重看起来像一个直角三角形(长度 M,高度 M/sum(1:M) )。三角形 COG 的水平坐标位于底边的 2/3,因此 WMA 的滞后(群延迟)是 (n-1)/3 计算窗口的长度。

我知道这是一个老问题,但是在阅读了几十个答案之后,它仍然不是很清楚。所以这是我的尝试。

假设您的移动平均滤波器深度为 10,这意味着等效的 FIR 滤波器将具有 10 个系数并且为 9 阶。

滤波器输出延迟和群延迟之间经常存在混淆(我必须承认这也是我的情况):

  • 输出延迟是输入的变化完全反映在输出上所需的时间。它也可以用样本表示并且等于过滤器顺序(因此我的示例为 9 个样本)。
  • 群延迟是输入信号的各种正弦分量通过滤波器的幅度包络的时间滞后。它也可以用样本表示,等于过滤器阶数的一半(我的例子是 4.5 个样本)。

而且因为一个好的草图比一个长的演讲更好: 输出延迟与群延迟

另请注意,在简单移动平均的情况下,脉冲响应的所有系数都相等(到110对于我的例子),所以脉冲响应是对称的。这意味着滤波器具有线性相位,并且群延迟也将等于相位延迟。