我一直在扫描所有 FFTW 文档,试图弄清楚如何对我的 FFT 频谱进行反演。
该文档仅提到如何使用相反的变换来逆 FFT 实数到复数的c2r变换。
任何地方都没有FFTW_INVERSE标志,但我怀疑FFTW_FORWARD/BACKWARD转换可能是我需要的。
即 FFT 的 FORWARD 和 IFFT 的 BACKWARD。文档谈到它翻转标志;我记得IFFT发生了类似的事情。
向后变换只是IFFT(用于前向变换)吗?如果没有,你如何实现IFFT?
我一直在扫描所有 FFTW 文档,试图弄清楚如何对我的 FFT 频谱进行反演。
该文档仅提到如何使用相反的变换来逆 FFT 实数到复数的c2r变换。
任何地方都没有FFTW_INVERSE标志,但我怀疑FFTW_FORWARD/BACKWARD转换可能是我需要的。
即 FFT 的 FORWARD 和 IFFT 的 BACKWARD。文档谈到它翻转标志;我记得IFFT发生了类似的事情。
向后变换只是IFFT(用于前向变换)吗?如果没有,你如何实现IFFT?
FFTW是一个不错的库。
真正的向前,真正的向后,复杂的向前,复杂的向后。
执行新计划时重新填充输入数组。对我有用,通过 MM 慷慨提供的链接查看文档以获取更多详细信息。
从工作代码中提取:
//--- 让 FFTW 通过 FFTW 计划进行 DFT
fftw_plan 计划;
/*
//--- 真实 DFT
thePlan = fftw_plan_dft_r2c_1d(theSignalN,
信号阵列,
DftArray,
FFTW_ESTIMATE );
//--- 真实逆DFT
thePlan = fftw_plan_dft_c2r_1d(theSignalN,
DftArray,
信号阵列,
FFTW_ESTIMATE );
//--- 复数 DFT
thePlan = fftw_plan_dft_1d(theSignalN,
信号阵列,
DftArray,
FFTW_FORWARD,
FFTW_ESTIMATE );
*/
//--- 完成逆 DFT
thePlan = fftw_plan_dft_1d(theSignalN,
DftArray,
信号阵列,
FFTW_BACKWARD,
FFTW_ESTIMATE );
fftw_execute(计划);
fftw_destroy_plan(计划);