【C#】高速フーリエ変換

C#を用いて、高速フーリエ変換する方法(ソースコード付き)についてまとめました。

高速フーリエ変換(C#)

高速フーリエ変換(Fast Fourier Transform; FFT)とは、離散フーリエ変換の対称性に着目し、計算量を減らして高速にフーリエ変換を行う手法です。
下記の参考文献では、C#でFFTのアルゴリズムを実装されているので大変参考になりました。

参考文献
1 C#で画像処理 高速フーリエ変換(FFT)

ソースコード

サンプルプログラムのソースコードです。
C#の場合は、「Math.NET Numerics」をNugetでインストールすると簡単にFFTを実装できます。

using System.Numerics;
using MathNet.Numerics;
using MathNet.Numerics.IntegralTransforms;

namespace App1
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = 256; // サンプル数
            double[] data = new double[N];
            var x = new Complex[N];

            // 適当なデータを用意
            for (int i = 0; i < N; i++)
            {
                data[i] = i;
            }

            // 複素数データに変換
            for (int i = 0; i < N; i++)
            {
                x[i] = new Complex(data[i], 0);
            }

            // FFTを実行
            Fourier.Forward(x, FourierOptions.Default);
        }
    }
}
- 関連記事
1 C#入門 サンプル集
2 【C#】数値計算入門
3 高速フーリエ変換(FFT)の計算式の原理・意味
関連記事

コメント