来自 fftfreq 的文档:
>>> signal = np.array([-2, 8, 6, 4, 1, 0, 3, 5], dtype=float)
>>> fourier = np.fft.fft(signal)
>>> n = signal.size
>>> timestep = 0.1
>>> freq = np.fft.fftfreq(n, d=timestep)
>>> freq
array([ 0. , 1.25, 2.5 , 3.75, -5. , -3.75, -2.5 , -1.25])
为什么输出数组中有负值?
我正在尝试绘制幅度与频率的关系图。我可以通过在
abs()
的元素上运行 fourier
函数来获得振幅,但是如何将 freq
转换为一系列频率,我可以在绘制 fourier
时将其用作 x 轴? 最佳答案
它是 FFT 算法固有的。
FFT 数组的后半部分是前半部分的共轭,因此不包含任何新信息。
要可视化频谱,只需使用前半部分。
f=freq[:n/2]
s=abs(fourier[:n/2])
plot(f,s)
关于python - 为什么 fftfreq 产生负值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36234538/