【问题标题】:How do I remove negative frequencies after a Fourier transform?傅里叶变换后如何去除负频率?
【发布时间】:2021-12-28 15:25:11
【问题描述】:

我使用 Java 库对一些大小为 nx 和 nt 的二维气象数据(经度和时间)执行快速傅立叶变换。转换后,我得到一个大小为 2*nx 和 nt 的复数数组,其中 2*nx 和 2*nx+1 索引表示具有实部和虚部的复数。对于每个时间频率,在空间频率维度上都有复数是复共轭的,所以从索引 1 到 nx/2 的数是从 nx/2+1 到 nx 的复数共轭。我理解从 nx/2 到 nx 的复数代表负波数。

我的问题是:如何在逆变换之前去除负波数?我只想保留具有正波数和频率的波,但是如果我将复数从 nx/2+1 到 nx 设置为零然后变换回来,我得到一个复数数组,我不知道如何解释这个或找到一个只表示正频率和波数的实数阵列等价物。谁能指导我如何过滤掉负波数并获得具有物理意义的东西,即实数?

【问题讨论】:

  • 如果希望逆变换为实值,则需要频域具有复共轭对称性。你不能将“负”频率设置为零,因为那样你就没有对称性。

标签: filtering fft


【解决方案1】:

“保留具有正波数的波”并从完整复数 IFFT 中获得严格实数的方法是确保您输入 IFFT 的阵列是共轭对称的,因为共轭对称会导致IFFT 结果抵消为零(或非常接近零,带有一些微小的舍入“错误”或数字噪声)。

您的库中可能有反实数 FFT 实现可以为您执行此操作,例如以半长复数数组为输入,在内部合成输出严格实数所需的共轭对称性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2021-12-02
    相关资源
    最近更新 更多