在傅立叶空间中创建网格

时间:2012-05-01 10:09:20

标签: python numpy fft

我有一个代码,可以创建一个尺寸为4x4 arcsec的正方形图像,从-2 arcsec到+2 arcsec,并在80x80网格上创建。为此,我想添加另一个图像。 第二个图像是通过80x80网格的FFT创建的,因此从傅里叶空间开始。在FFT之后,我希望图像在真实空间中具有与第一图像完全相同的尺寸。

因为傅里叶空间代表尺度而波数被定义为k = 2pi / x(尽管在这种情况下numpy.fft使用我认为k = 1 / x的定义),我认为最大尺度必须具有最小的k值,最小的尺度是最大的k值。

因此,如果x_max = 2(第一个图像的x方向的尺寸)和dim_x = 80(网格中的列数):

k_x,max = 1 /(2 * x_max / dim_x)

k_x,min = 1 /(2 * x_max)

让傅立叶空间中的网格从k_x,min运行到k_x,max(y方向相同)

我希望我能够清楚地解释这一点,但是我在文献中找不到关于FFT的任何确认或解释,并且真的想知道这是否正确。

提前致谢

1 个答案:

答案 0 :(得分:2)

这不正确。 k空间值的范围为-N/2*omega_0(N-1)/2*omega_0,其中omega_0是样本长度的倒数,由2*pi/(max(x)-min(x))给出,N是样本数。因此,对于您的情况,您可以获得以下内容:

N = len(x)
dx = x[-1]-x[0]
k = np.linspace(-N*pi/dx, (N+1)*pi/dx, N)