最小群延迟滤波器可去除谐波但保留基波

信息处理 过滤器设计 数字滤波器
2022-01-31 08:40:55

我有一个信号,其中包含基频(60 Hz)的能量加上谐波(第 2、第 3 等直到第 15)的显着能量。信号由 ADC 以 1920 Hz 采样。我想构建一个数字滤波器来去除/减少谐波,但允许基波和非谐波内容通过。在我的应用中,重要的是尽量减少滤波器引入的整体时间延迟,以及尽量减少陡峭前沿上的过冲/下冲。当信号未处于零交叉时继电器闭合时会出现这种边沿。由于信号源是三相,因此不可能在所有三相的过零处闭合继电器。我特别关心消除所谓的三次谐波(第 3、第 9 和第 15 次),如果需要,可能会牺牲滤波器在其他谐波处的性能。

我目前正在使用一系列 IIR 陷波滤波器,每个谐波频率从 3 次谐波开始。我想知道我是否应该考虑更有效/更优雅的解决方案。我考虑过一个梳状滤波器,但不知道如何制作一个允许基波通过的滤波器。我还考虑了一个简单的 LPF,但发现很难创建一个在 3 次谐波上具有良好性能的 LPF,而不会在基频上引入显着的群延迟。我想将基本延迟保持在 500uS 或更少,在我的情况下大约是 1 个采样周期。

我是数字滤波器设计的新手。也许这个论坛上的其他人也面临过类似的设计挑战?任何建议或意见表示赞赏。具有谐波含量的示例信号

2个回答

在我们想要消除信号占据的感兴趣频谱范围内的干扰音调的应用中,以下内容很有用,因此我们希望最大限度地减少我们移除的频谱量。如果我们真的只对 60 Hz 的信号感兴趣(可能是 OP),那么 PLL 或二阶谐振器将是最适用且简单的,我已经在此链接中详细介绍了。

此链接中描述的梳状滤波器显示了在保留基波的同时消除谐波的方法,但延迟更长,等于滤波器系数数量的一半,并且在其间的所有频率上都有很大的滚降。

您可以最小化群延迟并缩小陷波宽度的一种方法是使用零填充二阶陷波滤波器与零极点消除滤波器级联以用于感兴趣的通过频率。这是通过结合下面链接的两个帖子的详细信息来完成的。

第一篇文章展示了如何通过简单地对二阶陷波滤波器进行零填充来制作谐波陷波滤波器:

如何从基频创建谐波掩模?

类似于将移动平均分解为级联积分梳状结构,我们可以将上述内插陷波结构与本文中描述的单音陷波滤波器的逆进行级联:

二阶陷波滤波器的传递函数

这将是一个非常简单的解决方案,因为 OP 的采样率是感兴趣音调的倍数。

该滤波器是通过级联谐波归零滤波器创建的,该滤波器由以下传递函数给出:

H1(z)=K11zN1αNz1

在所需谐波处使用极点/零点消除器,由以下传递函数给出:

H2(z)=K212αcos(2π/N)z1+α212cos(2π/N)z1+1

在哪里:

N是直到采样频率的总谐波数(在 OP 的情况下N=32

α是一个滤波器 Q 因子,越接近1,陷波越紧(并且在定点实现的扩展精度累加器中所需的总位数将越大!)。α

K1是增益归一化常数,计算如下:K2

K1=1+αN2

K2=2+2cos(2π/N)1+2αcos(2π/N)+α2

下面显示了使用得到的滤波器和群延迟。的分子和分母中使用的更改为来选择要通过的任何特定谐波,其中是选定的谐波):α=0.99N=322π/NH2(z)K22πk/Nk

频率响应

请注意,群延迟在感兴趣的通带处被最小化。(1 次谐波)。

群延迟

有趣的旁注:移动平均滤波器同样具有由狄利克雷核(基本上是混叠的 Sinc)给出的频率响应,当我们想要通过 DC 但消除给定频率的每个谐波时,这很有用。当使用相同的技术来锐化移动平均滤波器中的频率响应零点时,得到的结构是前向路径中的移动平均,并且“泄漏”移动平均作为 IIR 结构被反馈和减去。“泄漏”移动平均值由系数给出,对于cn=αnn=0,1,2N1

鉴于我的声誉低下,如果这更像是评论而不是答案,我深表歉意。

正如其他评论所提到的,60 Hz 的正弦脉冲响应足以满足消除谐波的要求。如果您关心保留群延迟(以及相位延迟),请考虑使用零相位数字滤波器。关于filtfilt函数的 MATLAB 文档有一些很好的示例,看看它是否适合您的需求。本质上,相位延迟是通过执行两种滤波操作来维持的:一种是正向的,另一种是反向的。应该选择滤波器的脉冲响应,使其相对于滤波器的中心是均匀的,即 这两个滤波操作将具有相互抵消的相位延迟。请记住,此过滤器是非因果的。

h(n)=h(n)