Я пытаюсь выполнить преобразование Фурье с использованием Python.
Есть хорошая библиотека numpy
, которая имеет функцию fft
, которая, согласно документу, должна получить серию точек и вернуть преобразование Фурьеих.
Теперь я пытаюсь заставить это работать - но это выглядит неправильно ...
Я создал простые sine wave 1Hz
, Amplitude=1
.Я сэмплирую это с 8Hz
(таким образом, 8 сэмплов)
Вот сэмплы:
[0,0.707,1,0.707,0,-0.707,-1,-0.707]
Теперь я ожидаю получить взамен ens.[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)
Почему я получаю эти результаты?Что я делаю не так?