Как преобразовать реальное БПФ в реальное в библиотеке БПФ

Я пытаюсь выполнить некоторую фильтрацию с БПФ. Я использую план 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 вы можете установить направление преобразования с помощью флага, например:
p = fftw_plan_dft_1d (N, вход, выход, FFTW_FORWARD, FFTW_ESTIMATE);
или
p = fftw_plan_dft_1d (N, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);

5
задан Kirill Dubovikov 12 December 2010 в 15:02
поделиться