■フーリエ解析(11): 高速フーリエ変換(FFT)
              〜 音声データ処理の例 〜 (JavaScript版はこちら)

 関数 f(t)の離散フーリエ変換(DFT)、離散フーリエ逆変換(IDFT)は次式で定義されます。
  F (k) = n=0N-1 f (n)W nk

  f (n) = (1/N)k=0N-1 F (k)W -nk

  ここで、 W = e-j2π/N

 離散フーリエ変換、離散フーリエ逆変換ではデータ量 N が大きくなると計算量も膨大となります。 そこで、通常は離散フーリエ変換の高速演算法である高速フーリエ変換(Fast Fourier Transform:FFT)を用います。

 FFT はDFTの計算アルゴリズムの規則性をうまく利用することによって演算回数の大幅な削減を図っています。 ただし、FFTではデータ量 N が2のべき(N = 2i = 2, 4, 8, ..)である必要があります。

 次のアプレットは、音声データを1次元信号 f(t) [ t = 0, 1, 2, .., N-1 ]と考えて、FFT および IFFT(高速フーリエ逆変換: Inverse FFT)を行って結果を表示するものです。 演算時間の比較のため、通常のフーリエ変換(DFT、IDFT)での計算もできます。


 逆変換次数Mとして、データ数Nより小さい値を指定すると高周波成分がカットされた波形が得られます(ローパスフィルタ)。
[参考文献]
 1.Wikipedia:高速フーリエ変換
 2.末松良一、他: 画像処理工学、コロナ社(2001)

フーリエ解析(12): 2次元高速フーリエ変換(FFT) 〜 画像データ処理の例 〜
ホーム