我的问题是信号处理和python之间的边界。
我有一个Nx/2 + 1
和Ny/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)]
的复共轭镜像(切片的惯例在不同的语言之间可能会有所不同,并且如果Nx
和Ny
是偶数还是奇数,则请注意这一点。
鉴于第一象限和第三象限不是彼此的镜像(与第二象限和第四象限相同),是否意味着您无法使用第一个(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]]