据我了解数学你可以通过傅里叶变换来反转一个实值信号,取结果的复共轭和傅里叶逆变换,即
在哪里是傅立叶变换操作,上划线表示复共轭。这一切都是有道理的,从数学的角度来看,这不是很有用。然而,从 DSP 的角度来看,它非常有用,因为信号的自相关可以方便地转换为信号与其自身的时间反转版本的卷积。如果您使用 FFT 卷积,则意味着您只需计算信号的一次 FFT。
当我试图确认等式 (1) 在 python 中有效时,我发现结果偏移了一个样本。这是示例代码:
import numpy as np
from numpy.fft import rfft, irfft
x = np.arange(128)
y = np.sin(2 * np.pi * x / 128 * 4 + np.pi / 3)
y_rev = y[::-1]
y_rev_fft = irfft(conj(rfft(y)))
plt.plot(y, label="Original Signal")
plt.plot(y_rev, label="Straight Reverse")
plt.plot(y_rev_fft, label="FFT Reverse")
这是预期的结果吗?如果是这样,在我描述的 FFT 相关算法中仍然可以使用共轭吗?
另外,这个问题是否更适合另一个 stackexchange 站点?