python - 从numpy中的2d功率谱密度函数中检索完整的2d自相关函数
问题描述
我的问题是信号处理和 python 之间的边界。
我有一个 2d 功率谱密度函数 (PSDF),它构建在正空间频率点上Nx/2 + 1
,并Ny/2 + 1
与随机相位叠加(随机数来自均匀分布)。我想用它的二维傅里叶逆变换(在 python numpy 中numpy.fft.iff2()
)来检索它的(Nx,Ny))
自相关函数。为此,我必须构建复杂 PSDF 的二维对称或镜像。
这就是我的问题所在,我如何构建镜子?fft
我在 1d案例中发现了类似问题的语气,这很简单。事实证明,在 2d fft2
中,镜子有不同的顺序;
第 1 象限[1:Nx/2+1,1:Ny/2+1]
是第 4 象限的复共轭镜像,第[(Nx/2+2):Nx,(Ny/2+2):Ny]
2 象限[1:(Nx/2 +1),(Ny/2+1):Ny]
是第 3 象限的复共轭镜像[(Nx/2+2):Nx,1:(Ny/2+1)]
(切片的约定可能因不同语言而异,如果Nx
和Ny
是偶数或奇数,请注意)。
鉴于第一和第三象限不是彼此的镜像(与第二和第四象限相同),这是否意味着您不能(Nx,Ny)
使用第一个(Nx/2+1,Ny/2+1)
PSDF 值重建完整的自相关函数?我在这里缺少什么吗?
下面是一个示例 python 代码,numpy.fft.fft2d
用于显示这一点:
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]]
解决方案
推荐阅读
- python - 查询在 psql 中工作正常,但 Django cursor.execute() 给出“无法从标量中提取元素”
- android - Android studio 4.0.1 每次执行都消耗太多内存
- jsf - 如何使 JSF Flash Cookie HttpOnly 和安全
- python-3.x - 降低时间复杂度
- php - PHP会话中未定义的索引?
- node.js - googlesclassic.create 的正确 JSON 格式是什么?
- python - 执行 python 代码并评估/测试结果
- c - 如何使用calloc?
- html - 即使在窗口大小更改后如何使多个 div 居中
- android - 我正在尝试仅使用耳机在 Android 中发出声音