我尝试使用Numpy的fft函数,但是当我给函数一个简单的高斯函数时,该高斯函数的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()
结果并不完全正确,因为高斯函数的快速傅里叶变换应该是一个高斯函数本身...
numpy.arange()
这个函数。 - Sven Marnach