为什么fftfreq产生负值?

时间:2016-03-26 11:06:05

标签: python numpy

来自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

1 个答案:

答案 0 :(得分:4)

这是FFT算法固有的。 FFT数组的后半部分是前半部分的共轭,因此不包含任何新信息。

要想象光谱,只需使用前半部分。

f=freq[:n/2]
s=abs(fourier[:n/2])
plot(f,s)
相关问题