Я пытаюсь использовать функцию fft от Numpy, однако, когда я даю функции простую гауссовскую функцию, fft этой гауссовой функции не является гауссовой, она близка, но делится пополам, так что каждая половина находится на любом конце оси x .
Гауссовская функция, которую я вычисляю,
y = exp (-x ^ 2)
Вот мой код:
from cmath import *
from numpy import multiply
from numpy.fft import fft
from pylab import plot, show
""" Basically the standard range() function but with float support """
def frange (min_value, max_value, step):
value = float(min_value)
array = []
while value < float(max_value):
array.append(value)
value += float(step)
return array
N = 256.0 # number of steps
y = []
x = frange(-5, 5, 10/N)
# fill array y with values of the Gaussian function
cache = -multiply(x, x)
for i in cache: y.append(exp(i))
Y = fft(y)
# plot the fft of the gausian function
plot(x, abs(Y))
show()
Результат не совсем верный, потому что БПФ гауссовой функции должно быть самой гауссовой функцией ...