使用陷波或反陷波滤波器过滤奇数或偶数谐波

信息处理 z变换 转换功能 数字滤波器 带通
2022-02-24 02:42:52

嗨,我有以下问题。

我有一个包含 200Hz 正弦波的信号,它是奇次和偶次谐波(不包含其他频率或干扰信号)。我正在寻找的是一种能够将奇次谐波与偶次谐波分离的滤波器。最终目标是能够尽可能准确地确定每个奇次谐波的幅度和相位。我知道您通常会为此目的使用 FFT,但我想弄清楚这是否也不能用过滤器代替。

所以我想到了两个选择:

  1. 使用陷波滤波器的并联电路(每个要过滤的谐波一个)来切除我不想使用的偶次谐波,并将奇次谐波彼此分离。

  2. 完全相反,使用“逆陷波滤波器”过滤掉我想要使用的奇次谐波,并通过使用“逆陷波滤波器”的并联电路将它们彼此分离(一个用于我想要滤除的每个谐波并获取幅度和相位)。

我添加了一个小草图作为 png 以使事情更清晰。 Notch_and_inverse_Notch

问题是很难找到关于陷波滤波器或逆陷波滤波器的可理解信息。(反向陷波滤波器与峰值滤波器不同)

对于陷波滤波器,我只能找到如下虚假和简短的信息: https ://zone.ni.com/reference/en-XX/help/371325F-01/lvdfdtconcepts/notch_peak_filters/ https://www.onesdr.com/2019 /11/21/fm-notch-filters-why-you-need-one-with-most-sdrs/ https://www.youtube.com/watch?v=tpAA5eUb6eo

我发现的关于逆陷波滤波器的唯一信息来源是我提到的这篇论文(在论文第二页的顶部): https ://www.scirp.org/pdf/_2013060615443504.pdf

问题是我需要更多关于两种过滤器类型的信息,以及如何从更简单的过滤器类型派生它们并计算它们的传递函数和 Z 变换。

所以我的问题是(如果我不完全在木路径上)您更喜欢所描述的两种方法中的哪一种,您能否给我一些关于上述两种过滤器类型及其在硬件中的实现的清晰易懂信息的良好来源?您会为这项任务推荐一种完全不同的过滤器类型吗?

问候

3个回答

您正在寻找的是我们在音频领域称为梳状滤波器的东西。梳状滤波器可能有也可能没有反馈路径,就像 FIR 和 IIR 滤波器一样。事实上,有一个关于设计梳状滤波器的通用理论,简单地基于设计任何数字滤波器

事实上,您可以将每个 LTI 数字滤波器视为梳状滤波器,其中梳状滤波器的齿由采样频率隔开。要将齿以远小于采样频率的频率间隔分开,您需要一个比单采样延迟 ( ) 更长的延迟元件。如果具有整数个样本精度的延迟足以调整您的梳状滤波器,那么对您有好处。但如果不是,则需要处理插值和精度延迟z1

如果 OP 实际上只对从偶次或奇次谐波中选择一个单独的频率感兴趣,那么移动平均滤波器 (MAF) 将是理想的,因为当频率与谐波相关时,它可以在每隔一个频率处提供一个零值。所有系数为 1 的低通 MAF 将在时通过 DC,并提供间隔为 Hz 的零点,其中是滤波器的总持续时间(以秒为单位)。这意味着对于以采样率个抽头,空值将按间隔,因此选择谐波整数倍的采样率将提供最简单的解决方案。f=01/TTNfsfs/N

低通可以转换为带通,这样可以通过旋转滤波器系数来选择任何频率,对每个系数使用以下公式,其中滤波器中的系数总数:nn0N1

cn=ej2π(fo/fs)n

(这在形式上与 DFT 中的 bin 相同,并且 DFT 可以类似地显示为一组这样的滤波器:(参见DFT 中的旋转因子魔术)。

例如,如果我们将采样率设置为 4 KHz 作为 200 Hz 的整数倍,并且我们希望每 200 Hz 有一个空值,这将需要总滤波器持续时间秒,即总系数。下面显示了所有系数为 1 通过 DC 并将其余谐波归零的情况,并且当所有系数为的每个系数 n 时,通过 600 Hz并将其余的归零。fsT=1/200=0.005N=Tfs=20ej2π600/4000n019

具有旋转系数的 MAF

这是最简单的,如上所示,当采样率是要拒绝的频率的整数倍时,但可以通过将延迟元素与要拒绝的谐波的倍数的倒数相加来创建非整数倍数,使用 all-为实现传递延迟结构。

如果希望通过所有偶数或所有奇数谐波,则使用插值和差 FIR 滤波器(这是一个梳状滤波器,因为频率响应具有像梳子一样的“齿”)如果采样rate 可以是基频 200 Hz 的整数倍(或者如上所述,使用全通延迟结构而不是采样延迟元件来实现)。

首先注意下面的和和差的基本形式,带有一个延迟:

基本 LPF 和 HPF 结构

添加更多延迟与零插入插值相同,这会导致频谱针对每个插入的零进行复制。例如,如果有一个额外的延迟,过滤器响应将如下所示:

插值

对于 OP 的情况,根据需要处理的谐波数量,我们可以将采样率设置为 4 KHz,然后使用 4000/400 = 10 延迟来产生以下解决方案,提供偶数和奇数陷波到 2 KHz 的奈奎斯特频率,同时在每个所需谐波处提供最大响应:

陷波滤波器

在数学上,上述形式是多项式因式分解的结果zN1zN+1在任何一种情况下,复数 N 个根均围绕单位圆均匀分布。第一个减法的情况包括一个正好在z=1而加法的第二种情况有z=1两个根之间的距离相等。这些根是滤波器的零点,单位圆是频率轴,从而产生所示的频率响应模式。

您可以将窗口用作 FIR 滤波器(与窗口及时卷积),这样窗口变换的零交叉点位于ω0=2π2k200过滤偶次谐波,并通过变换对窗口进行相移π2滤除奇次谐波。例如,一个长方形窗口M将有零交叉点ω=2πkM. 你想选择M, 这样ω0=2πkM, 或者,M=1400s.

在 Matlab 中你会写

fs = 10000; %whatever your sampling rate is
f0 = 200;
M = round(fs/(2*f0));  %window length in samples
win = rect(win);
x_no_even = conv(x,win);
x_no_odd = conv(x,circshift(win,M/4));