从numpy中的2d功率谱密度函数中检索完整的2d自相关函数

时间:2019-02-11 08:28:03

标签: python numpy image-processing scipy signal-processing

我的问题是信号处理和python之间的边界。

我有一个Nx/2 + 1Ny/2 + 1正空间频率点上构建的二维功率谱密度函数(PSDF),叠加了随机相位(随机数是从均匀分布中得出的)。我想采用其2d逆傅立叶变换(在python numpy numpy.fft.iff2()中)来检索其(Nx,Ny))自相关函数。为此,我必须构造复杂PSDF的2d对称性或镜像。

在这里,我的问题来了,我该如何构造镜子?我在1d fft案例中发现了类似的问题,这很简单。事实证明,在2d fft2中,镜子具有不同的顺序;

第一象限[1:Nx/2+1,1:Ny/2+1]是第四象限[(Nx/2+2):Nx,(Ny/2+2):Ny]的复共轭镜像,第二象限[1:(Nx/2 +1),(Ny/2+1):Ny]是第三象限[(Nx/2+2):Nx,1:(Ny/2+1)]的复共轭镜像(切片的惯例在不同的语言之间可能会有所不同,并且如果NxNy是偶数还是奇数,则请注意这一点。

鉴于第一象限和第三象限不是彼此的镜像(与第二象限和第四象限相同),是否意味着您无法使用第一个(Nx,Ny) PSDF来重建完整的(Nx/2+1,Ny/2+1)自相关函数价值观? 这里有我想念的东西吗?

下面是使用numpy.fft.fft2d进行显示的示例python代码:

import numpy as np
x1 = np.arange(6)*1e-5
y1 = np.arange(6)*0.25
z = np.zeros( (len(x1),len(y1)) )
z = (x1[:,np.newaxis] + 2* y1[np.newaxis,:])  + 3
z_fft = np.fft.fft2(z)
np.set_printoptions(precision=3)
print(z_fft)

屏幕输出如下:

[[  1.530e+02 +0.000e+00j  -9.000e+00 +1.559e+01j  -9.000e+00 +5.196e+00j  -9.000e+00 +0.000e+00j  -9.000e+00 -5.196e+00j  -9.000e+00 -1.559e+01j]
 [ -1.800e-04 +3.118e-04j  -7.692e-16 -2.546e-15j   1.392e-15 -8.802e-16j  -1.776e-15 +0.000e+00j   2.161e-15 -6.582e-16j   7.692e-16 +1.007e-15j]
 [ -1.800e-04 +1.039e-04j  -3.251e-16 +1.776e-15j  -1.717e-15 +1.110e-16j   1.776e-15 +0.000e+00j  -9.477e-16 -1.110e-16j   1.213e-15 -1.776e-15j]
 [ -1.800e-04 +0.000e+00j  -8.882e-16 +0.000e+00j   8.882e-16 +8.882e-16j  -1.776e-15 +0.000e+00j   8.882e-16 -8.882e-16j  -8.882e-16 -0.000e+00j]
 [ -1.800e-04 -1.039e-04j   1.213e-15 +1.776e-15j  -9.477e-16 +1.110e-16j   1.776e-15 +0.000e+00j  -1.717e-15 -1.110e-16j  -3.251e-16 -1.776e-15j]
 [ -1.800e-04 -3.118e-04j   7.692e-16 -1.007e-15j   2.161e-15 +6.582e-16j  -1.776e-15 +0.000e+00j   1.392e-15 +8.802e-16j  -7.692e-16 +2.546e-15j]]

0 个答案:

没有答案