DFT (transformée de fourier discrète) avec C++ STL

J'essaie de calculer la TFD pour ce tableau x_1. Il doit être simple, mais mes valeurs sont trop faibles. Quel est le problème avec mon code?

Veuillez pas des liens vers d'autres exemples - juste à la recherche d'une solution pour mon propre code.

#include <iostream>
#include <complex>
#include <cassert>

int main ()
{
    const unsigned int N = 20;

    const double x_1[N] = {0, 0.3, 0.6, 0.8, 1, 1, 0.9, 0.7, 0.5, 0.2, 0.2, 0.5, 0.7, 0.9, 1, 1, 0.8, 0.6, 0.3, 0};

    for(unsigned int k = 0; k < N; k++)
    {
        std::complex<double> sum(0.0,0.0);
        for(unsigned int j = 0; j < N; j++)
        {
            int integers = -2*j*k;
            std::complex<double> my_exponent(0.0, M_PI/N*(double)integers);
            sum += x_1[j] * std::exp(my_exponent);
        }
        std::cout << abs(sum)/N << std::endl;
    }
    return 0;
} 
Savez-vous qui sont les valeurs de sortie pour l'entrée?
Oui, je les connais, et elles sont beaucoup plus élevées - Donc, je dois être mauvais. la 11ème valeur doit être autour de 0,48.

OriginalL'auteur Johannes | 2012-05-03