如何绕过离散傅里叶变换的循环移位属性?

信息处理 fft 离散信号 傅里叶变换 自由度
2022-02-21 14:35:59

我知道,当我们在有限序列上使用 DFT 引入线性时移时,算法假设信号在给定范围之外重复自身。这是一个解释 DFT 的循环移位属性的示例(Oppenheim,1998):在此处输入图像描述

现在假设我对纯正弦曲线的有限长度(X 个样本)进行了采样,但是当将开始和结束连接在一起时,正弦曲线本身并没有完美地重复。因此,当我想在频域中引入时移时,DFT 算法将假设我的信号每 X 个样本重复一次。所以我明白了: 在此处输入图像描述

输出信号(红色)不是平滑的正弦曲线,因为我的原始信号不能完美地重复自身。

我的问题是,有没有办法让我将时间偏移应用于纯正弦曲线而不会在输出中出现这种不连续性?也就是说,在应用时移后,我能否有另一种算法为我平稳地继续我的信号?

谢谢大家的时间!

2个回答

抱歉,没有。

DFT(或者实际上是 DFS,@robertbristow-johnson 会喜欢这个!)的循环移位属性是由法律规定的;您无法使用其他巧妙的技术摆脱它...

也许您可以引入一些冗余(例如长样本集但它们的窗口短,即零填充信号),您可以做一些技巧。但从根本上说,DFT 将始终执行循环移位。

是的,但不使用 FFT 移位属性,并且前提是您先验地知道原始信号是纯正弦曲线。

您将首先使用 Sinc 插值(或其他频率估计算法)来确定参数,包括准确的、bin 之间的正弦曲线频率。然后移动该正弦曲线的相位,并重新合成它(可能使用更长的 IFFT,其中测量的频率是整数周期)。

要做到这一点,您必须知道原始信号是周期性的(它可能不在 FFT 窗口之外),但在 FFT 宽度上不是整数周期性的,并且多个周期是有限长度的矩形窗口你的 FFT。