【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)の計算式の原理・意味

コメント

  1. 匿名 より:
  2. 岩本龍 より:

    失礼します。プログラム初心者です。
    フーリエ変換した値をExcelなどに数値として出力したい場合はどのようにすれば良いでしょうか?

    • 管理人 より:

      単純なやり方であればCSVファイルに出力してExcelで読み込ませるのが手っ取り早いと思います。