gpt4 book ai didi

c++ - 如何在 FFTW 库中进行实数到实数的反向 FFT

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:02 24 4
gpt4 key购买 nike

我正在尝试使用 FFT 进行一些过滤。我正在使用 r2r_1d 计划,但我不知道如何进行逆变换...

    void PerformFiltering(double* data, int n)
{
/* FFT */
double* spectrum = new double[n];

fftw_plan plan;

plan = fftw_plan_r2r_1d(n, data, spectrum, FFTW_REDFT00, FFTW_ESTIMATE);

fftw_execute(plan); // signal to spectrum
fftw_destroy_plan(plan);


/* some filtering here */


/* Inverse FFT */
plan = fftw_plan_r2r_1d(n, spectrum, data, FFTW_REDFT00, FFTW_ESTIMATE);
fftw_execute(plan); // spectrum to signal (inverse FFT)
fftw_destroy_plan(plan);

}

我做的所有事情都正确吗?我很困惑,因为在 FFTW 复杂的 DFT 中,您可以像这样通过标志设置变换方向:
p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
或者
p = fftw_plan_dft_1d(N, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);

最佳答案

http://www.fftw.org/fftw3_doc/Real_002dto_002dReal-Transform-Kinds.html

http://www.fftw.org/fftw3_doc/1d-Real_002deven-DFTs-_0028DCTs_0029.html

“种类”指定方向。

(另请注意,您可能希望通过除以 n 来重新归一化信号。FFTW 的归一化约定在变换及其逆后乘以 n。)

关于c++ - 如何在 FFTW 库中进行实数到实数的反向 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com