我正在尝试利用Numpy的fft函数,但是当我给函数一个简单的gausian函数时,该gausian函数的fft不是gausian,它的接近但是它的一半使得每一半都在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 …Run Code Online (Sandbox Code Playgroud) 我想对一个函数进行傅里叶变换psi(x),将其乘以 k 空间函数exp(-kx^2-ky^2),然后将乘积逆傅里叶变换回 x 空间。
但是我的 x 空间和 k 空间网格位于中心,并且我知道我需要fftshift并ifftshift正确实现我的 k 空间乘法。但我不明白它们是如何工作的,所以我不知道按照什么顺序来实现它们。有人可以告诉我我在这里做得是否正确吗?
import scipy.fftpack as spfft
import numpy as np
#Create a centred k-space grid]
kxmax, kymax = 10,10
kxgrid = np.linspace(-kxmax/2, kxmax/2, NX)
kygrid = np.linspace(-kymax/2, kymax/2, NY)
KX, KY = np.meshgrid(kxgrid, kygrid, indexing='xy')
psi = spfft.ifft2(spfft.fftshift(np.exp(-(KX**2 + KY**2)) * spfft.fftshift(spfft.fft2(psi))))
Run Code Online (Sandbox Code Playgroud)