Если функция по своей природе нечетна (как функции синуса), то только мнимая часть функции fft
будет отлична от нуля.Я думаю, что ваша проблема в том, что ваша функция не является периодической, как должно быть, вы должны исключить последнюю точку:
import numpy as np
x=np.linspace(-np.pi,np.pi,50,endpoint=False)
y=-np.sin(x)
yf=np.fft.fft(y)
even_part=yf.real
odd_part=yf.imag
Здесь только odd_part[1]
не равно нулю.Если ваша функция не странная и вы хотите ее принудительно использовать, вы можете либо использовать sdt
, как я упоминал в комментариях, либо добавить обратную функцию к левой стороне, а затем использовать fft
.
Другойточка, если ваш ввод не сложный, то быстрее и эффективнее использовать rfft