Excelには標準でフーリエ解析の機能を備えていますが、解析用のデータを変更してもフーリエ変換の結果は自動更新してくれないので、少し使い勝手の悪い物になっています。
そこで、エクセルのセルの部分にSUM や AVERAGE のような関数と同じように動くマクロ(ユーザー定義関数)で作成したフーリエ変換の関数(Fourier)を作成しました。
ユーザー定義関数で作成しているため、解析用のデータを変更すると、フーリエ変換の結果も自動で変更されます。
ファイルのダウンロードはこちら↓より
(Excel2016推奨、それ以前だとファイルを開いた直後はフーリエ変換の値が0になるようです。)
使用方法
このファイルはマクロを使用しているため、ファイルを起動するとセキュリティ警告が表示さている場合は、コンテンツの有効化をクリックしてください。
まず、フーリエ変換の結果の出力先のセルを縦方向にデータ個数と同じ分だけ選択し、
= Fourier( データのセル)
と入力し、Enterではなく、Ctrl + Shift + Enterキー を入力します。
これで、フーリエ変換の結果が複素数で表示されます。
複素数はいらないから、絶対値だけ欲しいという場合にはFourierAbs関数を使って下さい。(使い方は同じです。)
フーリエ変換の結果は標準のフーリエ解析の結果と同じになるようにしていますが、10の-15乗ぐらいの誤差が出ています。
フーリエ変換の結果の複素数の大きさを計算するには、Excelの標準関数の IMABS関数 で求まります。
同様に位相は IMARGUMENT関数 で求まります。
このマクロのポイント!
- 窓関数に対応
= Fourier( データのセル, “Hamming”)
のように入力することで、入力データに対して窓関数を通します。
対応している窓関数の名前はハミング Hamming ハニング Hanning ブラックマン Blackman の3つ。
- FFT/DFTの自動切換え
マクロ処理内部で、フーリエ変換するデータ個数が2のN乗個の場合はFFT、それ以外の場合はDFTとなり、データの個数が2のN乗個の制限はありません。
逆フーリエ変換を追加
2018.6.19追記
逆フーリエ変換に対応したIFourier関数を追加しました。
逆フーリエ変換の計算は別シートの逆フーリエ変換のシートを参照ください。
使用方法については、普通のフーリエ変換の時と同じように
= IFourier( データのセル)
と入力し、Enterではなく、Ctrl + Shift + Enterキー を入力します。
ただし、逆フーリエ変換なので、データのセルの部分は、基本的に複素数となります。
逆フーリエ変換の結果はこちら↓です。
上の絵を見ても分かるように、虚数成分の10の-15乗程度の誤差が入ってしまっているので、複素数の実部だけを取得するIMREAL関数で実部を取得すると、ほぼフーリエ変換の時に用いたデータに戻っていることが確認できるかと思います。
←フーリエ変換へ戻る