離散フーリエ変換(DFT)とは、離散的なフーリエ変換である。
主に画像処理や音声解析など、信号解析を含む工学や情報の分野で利用されている。
計算速度の問題から、実用上は常に高速フーリエ変換(FFT)が用いられる。「FFTを掛ける」などと呼ぶ人が多いくらいに、離散フーリエ変換の代名詞となっている。
原理を勉強したい場合は信号解析などのワードで調べるとよいだろう。
概要
簡単に言えば、振動や交流電流などの波形データから周波数を分析し、抽出する手法である。これは、波が正弦波の単純な足し合わせで表現できることに基づいている。波やノイズはとりあえずフーリエ変換してみるくらいには波形の分析に役立っている。もちろん、得られた周波数データは数学的処理を施しただけであるので、波形や周波数の解釈はその分野の経験が必要である。
特徴
測定などで得られた波形データを周波数ごとに分類し、どの周期の波の成分が多いのかをグラフ化させる。波形が時間に対しゆっくり変化している場合は低周波領域にピークが現れ、細かい振動が多いデータであれば高周波領域にピークが多く出る。
元の波が正弦波に近いほど変換後のピークが鋭く表れ、鋭く変化する波ほど変換後のピークがなだらかになる。これは鋭い波が多数の正弦波の足し合わせで表現できるからである。その極限がδ関数(インパルス応答)であり、1点だけ異常に高いピークがあると周波数データのグラフ全体が水平に移動してしまう。
白色ノイズのように完全にランダムに変化する波形は変換後もランダムなピークになる。
一見するとランダムに見える波形も特定の周波数帯の波からなることが多く、ピークの特徴が異なれば起きている現象も異なることが推測できる。例えば回転軸から発生する振動などは周期的運動と同じもしくは定数倍の周期の波形が現れると予測できる。回転と異なる周期の波があれば回転と無関係の現象が起きていると予測できる。
計算の原理上、周波数データは複素数値関数として現れるが、実用上は実数値=偶関数成分(コサイン波)、虚数値=奇関数成分(サイン波)と思っておけばよい。
精度を上げるためには
周波数データの精度は元となる波形のデータの精度によって決まるが、何を精度よく求めたいかで対処が異なる。基本的には他のデータ解析と同様、波形のサンプリング間隔Δtを小さくし、サンプリングの総数(計測時間)Tを長く取るとよい。
波形データにフーリエ変換を施すと、周波数データのピーク分解能は1/Tに比例し、周波数領域は1/Δtに比例する。つまり、Tを長く取れば長く取るほどピークが細かく滑らかに取れ、Δtを細かくすればするほど高周波成分を拾うことができる。高周波ノイズを解析したいならΔtを小さく取り、ピークの形状を詳しく知りたいなら10周期~100周期分(可能ならもっと)取ってやればよい。
また、計測機器や計算機由来の白色ノイズは積算することで軽減されるので、波形データを多数取るかTを長く取ることで余計なノイズの影響を軽減することができる。
欠点
最も大きな欠点は、「実測されたデータがぴったり1周期分になることは基本的に無い」ということである。ぶつ切りにしたせいで元データが周期関数ではなくなっているのに周期関数と解釈してしまう問題である。
離散フーリエ変換の定義から、長さNのデータは長さNの周期的データとして解釈される。したがって、測定データがきっちり1周期分で整っていなければ波形が境界(測定の最初と最後)で急激に変化していると解釈されてしまったり、本来の周期と異なる周期の波として処理されてしまう。例えば、本当は1秒周期で変化する波形でも、1.1秒で測定を打ち切ってしまうと余計な分が追加され、本来の波形からは得られないはずの周波数が現れてしまったり、ピークがずれたり、すそ野の広がったようなピークが現れてしまう(境界で鋭く変化していると解釈され、様々な波が重ね合わさっているように変換されてしまう)。
対処法
- 波の周期がわかっているものは測定の開始と終了をその周期に合うように同期させてやる。
- 周期が不明の物はなるべく長い時間で計測することで中途半端に打ち切った波形の影響を小さくできる。
- 何度も測定し、波形を積算して平均を取る。打ち切るタイミングがランダムなら、影響が平均化され目立たなくなる。
ぶつ切りのデータの両端が滑らかに接続されないことが問題なので、余弦波のように、境界付近で滑らかに0になる(境界付近で値が0かつ微分した値が0になる)関数を掛けてやれば不連続になってしまう影響を軽減できる。有名かつよく使われる窓関数はハミング窓、ハニング窓。波形に対し何もしない窓(定数関数1を掛ける操作)を矩形窓(レクタンギュラー窓)と呼ぶ。
ただし、窓関数は元の波形を変形させてしまうので、いい加減に選ぶとこれまた余計なピークが現れたり、本来含まれるピークが消えてしまったりする。窓関数の影響を小さくするには、やはりTを長くすることが有効。窓自体を工夫することも考えられるが有名なものならば大きな問題はそれほど起きないので、信号処理を専門に研究する人でもなければ気にせず有名どころを使えばよい。
関連項目
- DFT
- 信号処理
- フーリエ変換
- 離散コサイン変換
- FFT
- Bluesteinのアルゴリズム
- 2
- 0pt