質問: エクセルの分析ツールにフーリエ解析というのがあるのですが、使い道を教えてください。オンラインヘルプ見ても良くわからんのです。 例をみると1,0 の数列を変換しているのですが、そもそも連続波の解析には使えるのでしょうか? 私がイメージしているのは例えばオシロでやってるFFTをパソコン上で出来るか?というものです。あまり精度は期待してませんが。
回答: はい。出来ます。精度も問題ありませんよ。 ただ、使い方がわかりにくいですよね。helpも全然役に立たないし。 FFTは「離散フーリエ変換」を高速に行う方法です。 まず、離散フーリエ変換は、 xi = f(ti) -T <= ti <= T i = 0,1,...,N-1 N:データ数 の式があって、 これをFFTすると、 yi = F(wi) が得られます。 ここで、 ti = ΔT×i (ΔT:サンプリング間隔) ですね。オシロデータだとtiは時間になります。 wi = i/(NΔT) i = -N/2 ... N/2 で、tが時間ならばwiは周波数になるわけです。 で、Excelでの処理方法です。 まず、FFTの条件として、Nは2の累乗でなければなりません。(N=2^m) まず、データxiの配置の仕方です。 わかりやすいように、一行目はタイトルにして、2行目から縦に(行方向)データを入れていくことを考えます。 A列(計算用): セルA2より 0...N-1までの数字を順に並べる。 B列(添え字): セルB2より 「if(A2<=N/2,A2,A2-N/2)」を入力(N個) C列( 時間 ): セルC2より 「ΔT(サンプリング間隔)×A2」を入力 D列(データ): セルD2より A列の添え字に対応するxiを並べる E列(周波数): セルE2より 「B2/(N×ΔT)」を入力する。 F列( 結果 ): FFTの結果を入力するセルとして指定する。(F(wi)が入ることになります。) さて、これでFFTを選んで、入力をD列のデータ、出力をF列に選んで実行して下さい。 結果がF列に入ったと思います。 このとき、E列が周波数で、F列が結果です。 ただし、F列はそのままでは複素数になっています。(エクセル上は文字列扱い) もし周波数強度を知りたいときには、絶対値(IMABS関数)、又は2乗してあげるとよいです。 周波数成分も正負両方出てきますが意味がなければマイナス成分は無視します。 なお、上記の添え字の付け方では周波数成分の、i=-512のデータがありません。 しかし、これは問題はなく、i=512のデータとi=-512のデータは同じデータになるためです。 データの配列の順番が特殊なのはFFTの処理の仕方の特徴です。 FFTの中身を詳しく知りたいときには、Numerical Recipes in C(技術評論社:ISBN4-87408-560-1)あたりが参考になるでしょう。