基数2の周波数間引き高速フーリエ変換(Radix2-FFT-DIF)を、Javaで実装しました。
このアルゴリズムの目的は、離散フーリエ変換を高速に実行することにあります。
離散フーリエ変換は、波形の周波数領域における構成成分を解析することにあります。
⬇のリンクにソースと、検証用のコードを貼付けています。
入力データ
FFTに与える実部、虚部データを作成するpythonスクリプトでテストデータを
作成しています。
使い方
使い方は、fftクラスオブジェクトを生成した後、cal_fftメソッドに、
入力データのサンプリング周期、FFTしたいデータ(二次元配列)
とFFTしたいデータの個数を引数として、与えてください。
FFTしたいデータは、二次元配列の形をとります。
一次元目は、データの実数部、二次元目は、データの虚数部に相当します。
※FFTしたいデータの個数を与えないときは、入力データ全てがFFTの対象となります。
メソッドget_resultで、結果を取得できます。
結果も二次元配列の形をとり、
一次元目は、データの実数部、二次元目は、データの虚数部に相当します。
このFFTは、Radix2アルゴリズムを採用しているため、
与えることが出来るデータの個数は、2のべき乗です。
ex.
double [][] ans;
fft fft = new fft();
fft.cal_fft(0.01, datum, datum.length);
ans = fft.get_result();
テストコード、fftTestを実行すると、サンプルデータを入力値として、
fftの結果をプロジェクト直下にファイルfft_ansとして出力します。