频率分辨率对 DFT 位移定理的限制?

信息处理 fft 离散信号 傅里叶变换 自由度
2022-02-18 03:06:43

移位定理指出,将时域中的正弦波移位t等效于将信号的相应 DFT 系数乘以复指数e^(-jwt)由以下操作描述:

来自 dsprelated.com

然而,我意识到,为了精确地应用时移,感兴趣的频率必须是频率仓大小的倍数。

这是我在 MATLAB 中做的一个简单示例 - 我模拟了两个信号(蓝色和红色),红色是蓝色的延迟版本(具有任意 Fs 和信号长度)。我的目标是通过延迟的时间量对红色信号进行时间移动,使其与蓝色信号重叠(暂时忘记由循环移位属性引起的不连续性!!)

在这张图片中,我的信号频率 (104.65Hz) 是我的频率仓大小的精确倍数,因此偏移的信号与原始信号完美匹配。

在这种情况下,我的信号频率(150Hz)位于我的频率区间之间。尽管 150Hz 非常接近 104.65Hz,但偏移量偏离了我想要的延迟量。


现在想象一下,如果我有一个带有多个正弦分量的稍微复杂的信号,我想将它们中的每一个移动一个不同的t几乎不可能选择我的频率箱,以便它可以被所有这些频率很好地划分。在这种情况下我该怎么办?

我想我想知道:

  1. 如果有人可以向我解释这种移位偏移究竟来自哪里。

  2. 如果我有一个上述更复杂的信号,并且我想将不同的正弦曲线移动不同的量,我该如何解决这个问题?

非常感谢!

1个回答

但是,如果我想将不同的频率分量偏移不同数量的样本怎么办?在这种情况下,您无法找到整个数据集的 FFT 并乘以相同的指数。您必须分别处理不同的频率,对吗?

您所描述的是一个具有非恒定(即频率相关)群延迟的系统。

群延迟是相位的导数,因此, dfdfϕ(f)的一个系统。

在滤波器设计中,您(大多数时候)需要恒定的群延迟,因此您设计的滤波器具有线性相位(这意味着您需要使用 FIR 滤波器,并且需要使它们对称);线性函数的导数是常数!

现在,您需要一个给定的“群延迟配置文件”。Sooo,如何实际实现以下想法:

从本质上讲,您可以通过通常用于设计所需幅度响应的线性相位滤波器的窗口设计方法来解决此问题。相反,您想要定义群延迟,从而定义随频率变化的相位响应。

  1. 通过对该轮廓进行数值积分(即进行累积总和),将您的群延迟定义转换为相位定义。(积分是从相位响应传递群延迟的微分的逆运算;因此,结果应该是每个值都是ej2φ, 和2πφ是你想要的相对延迟)。在高“过采样”下进行该定义,即如果您只需要实际“分辨率”来实现采样率/10 的频率相关延迟,则将该函数定义为 200 点。请注意,您的“频率采样率”为rfreq=fsample200.
  2. 将结果与低通线性滤波器脉冲响应进行卷积。为什么会在下一步变得更清楚。
  3. 通过执行 IDFT (IFFT) 将结果转换为时域。上面低通滤波器的效果现在是,很多结果值(足够接近)为零。所以,你可以省略这些。

如果我没记错的话,您现在有一个具有所需群延迟轮廓的滤波器加上一个常数(该常数源于频域中的低通滤波)。


如果您只关心非重叠频带并且它们应该具有非常不同的群延迟,则另一种方法是通过滤波器设计方法很难正确构建该滤波器:

  1. 找到“最硬”(即最窄)的波段;使用您最喜欢的数学工具包的滤波器设计方法为这些设计一个 FIR 带通滤波器(我建议设计一个等效宽度的低通并在频率上移动它)。该滤波器的长度将是所有带通滤波器所需的最长。充分过采样,即重新设计该滤波器,但使用假设长度的 20 倍。也将该长度用于所有其他过滤器。
  2. 线性相位滤波器的群延迟是其长度的一半。现在,您所有的带通都具有相同的群延迟τoffset.
  3. 通过变换 (FFT)、乘以适当频率的复数正弦曲线以及反变换 (IFFT) 来调整各个滤波器的群延迟。如果您的频率不是(足够接近)fs/length(filter),你会得到泄漏/吉布现象。您可以通过应用一个窗口来换取振荡的准确性。如果您的过滤器很长,则可能甚至不需要窗口。
  4. 总结所有滤波器脉冲响应。
  5. (可选)如果结果表明很多抽头接近于零,则截断。