如何做到真正的逆在FFTW库实时FFT [英] How to do inverse real to real FFT in FFTW library

查看:661
本文介绍了如何做到真正的逆在FFTW库实时FFT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一些过滤用FFT。我使用r2r_1d计划,我不知道该怎么做逆变换...

I'm trying to do some filtering with FFT. I'm using r2r_1d plan and I have no idea how to do the inverse transform...

    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);

Am I doing all the things right? I'm confused because in FFTW complex DFT's you can set a transform direction by flag like this:
p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
or
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-的DFT-_0028DCTs_0029.html

在种指定的方向。

(另请注意,你可能会想除以n来重新规格化你的信号。之后FFTW成倍正常化公约N A变换及其逆。)

(Note also that you'll probably want to renormalize your signal by dividing by n. The normalization convention of FFTW multiplies by n after a transform and its inverse.)

这篇关于如何做到真正的逆在FFTW库实时FFT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆