人気ブログランキング | 話題のタグを見る

離散フーリエ変換

標準型MCAP-CRの解析をすすめている。
正弦波入力に対する応答を求め、その後、ランダム波入力に対する応答の計算まで出来たところで、それを周波数分析(FFT分析)しようとしたところで詰まっていた。

GPLライセンスのFFTWサブルーチンを利用したいと考え試行錯誤していた。

最初にFFTWを使える状態にするのに悩んだら、結局OpenSUSEのソフトウェア管理機能を使ってインストールできることが分かった。何だ...ここまで1週間

次に、入力データの読込ませ方法が分からない。C言語の基本が分かっていないので、メモリ管理方法から勉強し直して結局何だか分かったような分からないような...
直接的に解説してあるページを発見したが、Visual C++を使っているのでそのままは使えない。悩んだが結局何とか計算実行出きるようになった。更に1週間。

計算結果を眺めていても解釈に詰まる。計算結果が正しいか正しくないか分からない。
悩んだ末に、定義通りやってみようかと思い立った。

FFTは面倒だが、DFT(離散フーリエ変換)の定義式は大したことないことに気付いた。自分の研究程度の分量なら実行速度の遅いDFTでも十分か?と思い、一からプログラムを書いてみた。たったの2時間で完成。FFTWの実行結果と十分に一致していた(細かい桁には多少の違いはあるが)。計算は一瞬で終わった。この場合に限れば、実質的にはFFTWを使うより速い。中身が分かっているので、計算結果の出力方法も思い通りだ。

しかし、各ポイントには、正の値だけでなく負の値もある。また、当然ながら、定義通り虚数項もある。
さて、問題は、どうやってこの結果を周波数特性にするのか???
by mcap-cr | 2011-12-29 18:15 | プログラミング | Trackback | Comments(0)

生演奏を主とすれば、オーディオは箱庭で充分でしょう。