我正在尝试计算以下高斯函数的傅里叶变换:
# sample spacing
dx = 1.0 / 1000.0
# Points
x1 = -5
x2 = 5
x = np.arange(x1, x2, dx)
def light_intensity():
return 10*sp.stats.norm.pdf(x, 0, 1)+0.1*np.random.randn(x.size)
fig, ax = plt.subplots()
ax.plot(x,light_intensity())
我在空间频域中创建了一个新的数组(高斯傅里叶变换是高斯分布,因此这些值应该是相似的)。我绘制出来,得到了以下结果:
fig, ax = plt.subplots()
xf = np.arange(x1,x2,dx)
yf= np.fft.fftshift(light_intensity())
ax.plot(xf,np.abs(yf))
为什么会分裂成两个峰值?
fftshift
函数并不执行傅里叶变换。若要计算FFT,请使用numpy.fft.fft
函数。fftshift
函数可以对FFT结果进行移位操作。 - Warren Weckesser