50 Hz 的陷波滤波器是否可以无延迟?

信息处理 过滤器设计 延迟
2021-12-26 06:14:05

我正在处理来自硬件的 EEG 信号(2 kHz 采样频率),而内置滤波器无法按预期工作。FIR 给出延迟,IIR 不稳定。

感兴趣的信号是从 4 Hz 到 360 Hz,目的是从信号中清除公用事业信号 (AC 50 Hz)。主要限制是尽可能多地获得未触及(无噪声、干扰和泄漏)的样本。这里的权衡是伽马脑电波从大约 40 Hz 开始,然后上升到 50 Hz 甚至更远。

是否有任何可用的选项来获得无延迟或至少一个非常小的延迟(357 抽头 FIR 提供超过 130 dB 的衰减,但 2 kHz 的延迟约为 180 ms。我的目标是延迟小于 30 ms至少 60 分贝)?

通带的起点是 49 Hz,终点是 51 Hz(实际上是这样的:https ://www.swissgrid.ch/en/home/operation/regulation/grid-stability.html ),所以它随时间变化并且是非平稳的。

4个回答

您可以使用二阶 IIR 陷波滤波器,正如我在这篇文章中描述的二阶陷波滤波器的传递函数- 那篇文章演示了一个 50 Hz IIR 陷波和 1 KHz 采样。

[更新:正如@user47050 在评论中敏锐地指出的那样,无论陷波带宽如何,IIR 陷波也将具有最小延迟,因为 IIR 陷波滤波器中的主要延迟特定于滤波器抑制带宽中的信号分量,而不是你想通过的信号。接下来的优点不一定是消除延迟问题,而是提供对大约 50Hz(但相位和幅度缓慢变化)的干扰的跟踪抑制,同时最大限度地减少对相邻感兴趣频率的影响。]

但是,要以零延迟消除干扰,请考虑反馈信号消除伺服,如下图所示。这不会对您的信号造成延迟,但会对您的干扰信号的变化产生延迟响应。结果将取决于干扰的相对稳定性。如果干扰是相对缓慢变化的正弦音调,这应该可以很好地工作。

这是一个全数字调零环路,可以调零到信号的 rms 功率电平(此时它不能再估计抵消系数)。以绿色显示的粗线表示复信号:50 Hz PLL 是具有正弦/余弦输出的 NCO,其后的乘法器是全复数乘法器(本质上是提供完全控制幅度或相位的矢量调制器),后的乘法器第二个 BPF 本质上是一个正交下变频器,用于测量残差的幅度和相位。

归零循环

其工作方式可描述如下:假设输入信号具有强 50 Hz 信号,足够强以至于与第一个 50 Hz BPF 的滤波相结合,PLL 可以锁定同相到音调(音调需要比 PLL 输入处的噪声强 6 dB)。这将提供 50 Hz 信号的锁相副本作为正交 NCO 输出。正交 PLL 基本上是一个非常紧密的跟踪滤波器,为消除目的提供了一个干净的副本。

接下来,我们有一个带有后消除带通滤波器的消除环,用于检测残差并调整复数系数,以在减法之前调整 50 Hz PLL 输出的增益和相位。我展示了将 50 Hz BPF 输出正交下变频到复数基带的方法(通过与复数 PLL 输出相乘),并将结果与​​收敛增益系数 k 相加。这是一个使用随机梯度下降法的取消循环。累加器累加在正交下变频器的 I 和 Q 输出上测量的残余误差,从而正确设置“矢量调制器”乘法器,从而产生与干扰信号幅度相等、相位相反的真实正弦波输出在输入。

该图可以简化,因为可以消除第一个 50 Hz PLL BPF,并将 PLL 替换为恒定的 50 Hz 正弦/余弦发生器,因为矢量调制器提供了对旋转相位的完全控制,用于调整频率的正向或负向根据需要,以及提供所需取消所需的增益。使用 50 Hz BPF + PLL 的建议是,一旦消除环路收敛(因为 PLL 将跟踪输入并且可以设计成具有更宽的环路带宽),对输入信号的相位变化提供更快的校正是可行的。比归零环路)-但是,如果干扰的幅度变化占主导地位,那么我认为拥有 PLL 并没有很大的优势。

如果没有 PLL,这将简化为以下框图。这里一切都在复杂的基带上完成,因此使用低通滤波器而不是带通滤波器(我可能会将其实现为指数平均滤波器)。k 是复收敛增益,c 是确定的复校正系数,它将缩放生成的 50 Hz 消除信号的增益和相位(如前所述,c 将是随时间变化的相位,以调整小频率偏移,这将也存在)。

与二阶 IIR 陷波滤波器相比,PLL 实施具有明显的优势,因为它可以在 PLL 的跟踪范围内,在相对宽得多的带宽上跟踪和消除音调干扰。如果不进一步研究下面的实现,我不相信它会胜过二阶 IIR 陷波滤波器,但考虑到它比 PLL 方法简单得多,考虑一下它很有趣。

无 PLL 方法

作为具有 2KHz 采样率的固定 50 Hz 源,音调发生器实现起来很简单,但如果您将其扩展到其他应用并为固定 50 Hz 复音发生器使用 NCO,您最终会得到一个可调谐的单音自适应消除器将在 LPF 的带宽范围内捕获和消除 NCO 的任何频率设置附近的任何单音!消除环路将使 50 Hz 干扰源降低到滤波器发出的本底噪声 - 因此,滤波器越紧密,只要信号在滤波器带宽内,零点越深。

消除量将取决于输入信号幅度和相位的时间变化率。如上所示的方法对感兴趣的主信号具有零延迟,但它是根据过去的延迟时间 T 来估计干扰的特性,其中 T 受低通滤波器和环路的带宽(延迟)的影响零点环路的带宽(由 k 设置),因此对于可以抑制多少干扰信号的噪声带宽有一个频率上限(噪声带宽在干扰信号的功率谱密度中可见,基本上是 AM和 PM 噪声边带)。这个归零环路是对该干扰的高通滤波器;这是期望的,因为感兴趣的信号与噪声无法区分。

如果这种方法被证明是有用的,您可以通过使用递归最小二乘法(RLS 自适应算法)来进一步改进它,根据正交下变频器的误差项来确定应用于矢量调制器的复数权重。这以计算复杂性为代价收敛得更快。

这是一个不确定性原理类型的问题:由于频率空间中标准的狭窄性需要在时域中进行一定宽度的观察,因此无法制造具有小延迟的可靠滤波器来抑制 50Hz 附近的窄带。基本上,不能独立地最小化现象在时间和频率上的紧凑性。Gabor 小波在这方面的一种度量中是“最优的”。过滤器越窄,它对干扰变化的反应就越慢。我不会在这里使用 FIR 滤波器,而是使用短的陡峭 IIR 陷波滤波器。

这将抑制持续的嗡嗡声,并对通过 50Hz 的信号做出相对较快的反应(它们将被大部分接受,它们对抑制操作的影响不会很大并最终消失)。2 级 50Hz IIR 滤波器或多或少是一个阻尼 50Hz 振荡器,它与源信号缓慢同步并从中减去其输出。它被源信号及其输出的差异所激发,因此它倾向于跟踪输入的 50Hz 分量。

一种不同的方法是“回声补偿”:如果您的设备有电源插头,那么您已经有了一个与问题信号锁相的噪声模型。主电源嗡嗡声以非锁相的多个版本存在是非常不寻常的(尽管一旦备用发电机或安全网络发挥作用并非不可能),并且至少缓慢漂移将是算法将适应的东西。

我加入这个社区只是为了回答你的问题,因为大约 2 年前我在 ECG 领域遇到过类似的问题。

我发现(不幸的是我无法追溯源头)是一个非常简单的数字陷波滤波器解决方案,它可以将延迟的信号延迟到您想要滤除的频率周期的一半并获得它的平均值电流信号。

在您的情况下,2 kHz 采样频率,一个完整的 50 Hz 周期是 40 个样本。因此,您将信号延迟 20 个样本,并为每个样本计算当前样本和 20 个样本前的平均值:
在此处输入图像描述

在你的情况下,延迟是 10 毫秒。

此过滤器的结果显示在图片中:
在此处输入图像描述
在此处输入图像描述

唯一的缺点是衰减远小于您要求的 60 dB。我的粗略计算表明介于 20 dB 和 30 dB 之间。

我假设这是一个实时处理。否则,您可以简单地丢弃与群延迟相对应的样本数。

第一种解决方案 - 使用 IIR 陷波滤波器。你可以使用这个解决方案

为指定频率 50 Hz 分析设计陷波滤波器

如果您不接近 50 Hz,则群延迟将是最小的,可能可以忽略不计。然而,这个滤波器仍然会有一个瞬态响应,这可能是有问题的。不幸的是,我不能为你回答这个问题。

第二种解决方案:假设您的 50 Hz 噪声具有接近恒定的幅度,您可以估计此噪声并将其减去。只要您的估计接近。有效延迟将为 0。但是,如果噪声的幅度变化很快,这可能不起作用。