我正在尝试使用Python进行傅里叶变换。
有一个很好的库numpy
,其中有函数fft
,根据文档,它应该接收一系列点并返回它们的傅里叶变换。
现在我试图让它工作-但它看起来不对...
我创建了一个简单的1Hz正弦波
,振幅=1
。
我用8Hz
(即8个样本)对其进行采样
这些是样本:
[0,0.707,1,0.707,0,-0.707,-1,-0.707]
现在我期望得到[0,4,0,0,0,0,0,4]
或[0,8,0,0]
,表示频率为1Hz
(取决于是否按照奈奎斯特极限所需进行修剪)。
但实际上我得到了以下结果:
[0.00000000e+00+0.00000000e+00j, -2.22044605e-16-3.99969798e+00j,
0.00000000e+00+0.00000000e+00j, -2.22044605e-16+3.02022804e-04j,
0.00000000e+00+0.00000000e+00j, 2.22044605e-16-3.02022804e-04j,
0.00000000e+00+0.00000000e+00j, 2.22044605e-16+3.99969798e+00j]
这是我的代码:
import numpy
signal = numpy.array([0,0.707,1,0.707,0,-0.707,-1,-0.707], dtype=float)
f = numpy.fft.fft(signal)
print (f)
为什么我会得到这个结果?我做错了什么吗?