来自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
转换为一系列可以在绘图时用作x轴的频率fourier
?
答案 0 :(得分:4)
这是FFT算法固有的。 FFT数组的后半部分是前半部分的共轭,因此不包含任何新信息。
要想象光谱,只需使用前半部分。
f=freq[:n/2]
s=abs(fourier[:n/2])
plot(f,s)