【问题标题】:Python Numpy FFT fast fourier transform - weird resultsPython Numpy FFT 快速傅立叶变换 - 奇怪的结果
【发布时间】:2020-03-19 16:36:31
【问题描述】:

我正在尝试使用 FFT 获得 2D 孔径的相位分布。 输入是一个圆圈,圆圈内的所有值都为 1,圆圈外的值为 0。 为了进行良好的变换,我使用了一个 200 倍于圆半径的输入数组,并用它制作了一个 5000x5000 的网格。这样可以确保圆实际上是圆形的,并且周围有足够的空间,以免发生奈奎斯特事件。

我需要对光圈进行二维傅里叶变换,然后计算每个点的傅里叶变换相位。 我用于创建输入(光圈)的函数: creating the input aperture

接下来执行 numpy fft2 2D Fourier 变换: Fourier transforming aperture

结果是一个 2D 复数数组(正如预期的那样!),但虚部比实部小得多(虚部相差 17 个数量级 ~10E-17)。 这是意料之外的,而且很可能是错误的。出了什么问题?

【问题讨论】:

  • 请从链接的图像中提取代码并在您的问题中正确格式化,以便社区可以更有效地帮助您。

标签: python numpy transform fft


【解决方案1】:

完美对称输入的 FFT 相位结果为零,例如一个严格实数的结果,因此 atan2(Im,Re) == 0 ,(虚部全为零,舍入噪声除外)。

(关于 (0,0) 的循环对称,或关于 (n/2,n/2))

当输入偏离中心或以其他方式不对称时,相位将变为非零(因此 FFT 结果中的虚部非零)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多