Excel で FFTW を使う方法

FFT

FFTW を Windows 上で Excel から使う方法はないかググっていたところ、そのものズバリのものを mamesand さんの web サイト を見つけました。そちらで公開されている Excel のサンプルプログラムを少し書き加えて振幅スペクトルと位相スペクトルを出力するようにしました。

FFTW

FFTW は MIT で開発された高速な FFT 計算ライブラリで、任意サイズ・任意次元に対応したアルゴリズムを実装しており、GPL の下でライセンスされ MATLAB でも使用されています。

振幅スペクトル

振幅スペクトルは、離散フーリエ変換の絶対値です。

\begin{eqnarray}
\left| G\left( \frac{n}{NT} \right) \right| & & \qquad n=0, N/2 \\
2\left| G\left( \frac{n}{NT} \right) \right| & & \qquad n=1,\dots, N/2-1
\end{eqnarray}

位相スペクトル

位相スペクトルは、離散フーリエ変換の位相角です。

$$ \angle{G\left( \frac{n}{NT} \right)} $$

Excel サンプルプログラムのダウンロード

Excel のサンプルプログラムと DLL は下のボタンを押してダウンロードしてください。

zipファイルを展開すると以下の3つのファイルが入っています。

  • fftw_sample_mod.xlsm: excel サンプルプログラム
  • libfftw3-3.dll: VC++からのリンク用 FFTW の DLL (64bit 版、mamesand さん作成)
  • fftw-vbif.dll: FFTW による 1D FFT 実行 DLL (64bit 版、mamesand さん作成)

上の2つのDLL、fftw-vbif.dll と libfftw3-3.dll を ‘C:\Windows\System32’ へ入れてください。

Excel サンプルプログラムの説明

A列に時間(時系列データのグラフ表示にのみ使用)、B列にデータ、C2セルにサンプリング周期、C6セルに振幅スペクトル計算時のしきい値、を入力後、「FFTW 計算実行」ボタンを押すと、D列に周波数、E列に振幅、F列に位相(πで正規化)が出力されます。

参考

コメント