こういう仕事をしていて恥ずかしいのだが、FFTがよくわからない。連続系のフーリエ変換や直交規格系についてはそこそこ理解しているつもりなのだが、離散化したときの扱いは理解しないまま放置してきた。
今回プログラムにFFT機能を追加しなければならなくなったので、参考になりそうな本をいくつか取り出してきた。まず「科学計測のためのデータ処理入門」からサンプルコード(C言語)を丸写ししてみた。この本は計測データの扱いが主題なので、ソースコードの説明はあまり詳しくない。ソースには1つのFFT関数と三角関数のテーブルを作る関数があるだけなのだが、FFT関数が結構大きく、ローカル変数が使い回されていたりして少々分かりにくい。そもそも関数の引数がそれぞれ何を意味するのかも良くわからない。適当に試してみたが、やはりうまく動かない。
内容がわかっていないと直しようも無いので、少しまじめに勉強しなおそうかと思う。FFTの解説は「やり直しのための信号数学」のほうが詳しいのでこちらを読むことにする。