C#でDFT

Fastの方でもなくタクティクスの方でもない離散フーリエ変換(DFT: Discrete Fourier transform)C#で。


(式の画像はWikipediaから拝借しました。)

この級数に展開された式を、オイラーの公式を使って求めた式をコードにすると↓のようになります。

            for (int k = 0; k < N; k++)
            {
                for (int n = 0; n < N; n++)
                {
                    re[k] += data[n] * Math.Cos(-2 * Math.PI * k * n / N);
                    im[k] += data[n] * Math.Sin(-2 * Math.PI * k * n / N) * (-1);
                }
            }