信号波形のスペクトル解析を実施する機会が結構な頻度あり、.NET Framework向けのオープンソースな数値計算用のライブラリを使ってC#で解析プログラム作成してました。
Math.Numerics
https://numerics.mathdotnet.com/
このライブラリは非常に使い勝手いいのですが、今後もオープンソースであり続けるかという点で個人的に不安感あるのと、FFTはデータ数が2の累乗でなければならない(というか、最も計算効率が良い)ということですが、上記ライブラリ使用時は気にせず不定長のデータを入力してます。オシロスコープ上で実施するスペクトル解析の信号強度とほぼ同じ値(誤差±0.2mV以下)が出てくるので実質上は問題ないのですが、そこがブラックボックスなのでどうにも気持ちが悪いのです。
上記の理由より、オリジナルでライブラリ作成を検討しています。
FFTについてアルゴリズムの概要はだいたい理解できたのですが、バタフライ演算をどうプログラムに実装するか、が中々理解できません。
ネットで調べるといろいろな方がバタフライ演算のサンプルプログラムを提示してくれていますが、どうにも腹落ちができてません。
まずは形から入り覚える、ということで先達のプログラムをC#に移植しています。
とりあえず自分の頭の整理と覚えのため記載しました。