デジタルフーリエ変換とFFT

前章では、連続的な一次元空間である時間軸を考え、その一部または全体で定義された曲線的な関数に対して、フーリエ変換というものを考えました。

ただし、通信技術はどんどんデジタル化されています。

すなわち空間は連続的でなく、離散的な空間でサンプリングされたようなデータを扱うことになります。

その各サンプリング点におけるデータも、物理量そのものというより、それを何ビットかで量子化したものとなっています。

通信ではありませんが、これはLPレコードとCDを比較すればわかるでしょう。

LPの場合、時間とほぼ等価なのは溝内の位置ですが、これは連続しています。

そこに音声信号にしたがって凹凸があるわけですが、その凹凸量も、特に単位となる大きさが決まっているわけではありません。

これに対してCD(元々の規格)の場合、1秒を約4万4千回に分けてそこでのみ信号を与えるとともに、個々の信号値は左右合計32ビットで量子化されています。

量子化はともかく、このようにサンプリングされた数字列は、普通の意味でフーリエ変換を行っても意味がありません。

その代わりに行われるのがDFTと略されることの多い、デジタルフーリエ変換です。

サンプリング点を0, 1, 2, ... , N-1で表わし、それぞれの点で数字列f0, f1, f2, ... , fN-1が与えられているとします。

この時、DFTされた結果はやはりN個の数字列であり、その値は以下のように与えられます。

ただしΣは0からN-1までのkに対して和をとることに相当します。

Fj = Σfk * exp(-2πijk/N)~jは0, 1, 2, ... , N-1逆にFjの各値からfkの各値を求めることができます。

これはデジタルフーリエ逆変換(IDFT)です。

これに対して、FFTあるいは高速フーリエ変換という言葉を聞いたことがあるかもしれません。

ある特定のjに対し、Fjを計算するために、fkと何かの乗算を、N回程度行う必要があります(複素数なので正しくは2N回ですが、2倍の誤差を含めて「程度」という言葉を使います)。

そしてjの値自体、N個ありますから、結局すべてのFjを求める(=DFTを実行する)ためにはN×N回程度の乗算処理が必要となります。

しかしアルゴリズムを工夫することで、実は同じDFTを、N×N回程度よりはるかに少ない回数の乗算処理で実行できるのです。

具体的にはN×logN回程度ということになります。

これが高速フーリエ変換です。

アルゴリズムを具体的にどう工夫するかは、信号処理などの教科書を参照してください。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

« 特定の正弦波を抜き出すフーリエ変換 | ホーム | アナログ変調~AMとFM »

このページの先頭へ