Wednesday, March 21, 2012

C# : Discrete Fourier Transform - Magnitude

public double[] dft(double[] x)
{
    double[] real = new double[x.Length];
    double[] imaginary = new double[x.Length];

    double[] magnitude = new double[x.Length];

    for (int i = 0; i < x.Length; i++)
    {
        real[i] = 0;
        imaginary[i] = 0;

        for (int j = 0; j < x.Length; j++)
        {
            real[i] += x[j] * Math.Cos(-2 * Math.PI * i * j / x.Length);
            imaginary[i] += x[j] * Math.Sin(-2 * Math.PI * i * j / x.Length);
        }

        magnitude[i] = Math.Sqrt(real[i]*real[i] + imaginary[i]*imaginary[i]);
    }

    return magnitude;
}

No comments:

Post a Comment