PRIMO信号処理研究所 / Synchro PRIMO Lab.

周波数測定、位相差測定に関する新しい数理。
Please contact to snishie@mac.com.

DFT/FFTの限界 ー不確定性ー

2016-02-01 06:40:08 | 信号処理

DFT/FFT の限界

DFT/FFTを用いた周波数測定の限界について説明したいと思います。

DFT/FFTのサンプル数とサンプリング周波数に応じて、「周波数ビン」とも呼ばれる目盛りが決定されます。50Hzの測定で仮に1Hzの分解能が欲しければ、サンプル数Nとサンプリング周波数fsの間には以下のような条件が想定されます。

・ N=4096, fs=4096 (Hz) 

 こうすると、測定に要する時間は1秒となります。では測定時間分解能を0.1秒にしたい場合どうすればよいか。サンプリング周波数を高くする方法をまず考えてみます。

・ N=4096, fs =40960 (=40.96kHz) 

すると周波数目盛りである周波数ビン=10Hzとなってしまいます。一見周波数分解能が低下するように見えるのですが、得られたスペクトルF(ω)の実部・虚部をベクトルに見立てると回転が起こっており、この回転率をみることで、周波数ビンの分解能を超えた計測が可能です。

 仮に、1測定あたり、スペクトルの角度が36度変化しているなら、本条件の場合、1/10秒で36度の回転なので、1秒あたり360度、すなわち基準となる周波数ビンから1Hzの差があることがわかります。測定限界は180度です。これを超えるとベクトルの回転が右回りなのか左回りなのか判別できません。180度/0.1秒の変化は5Hzに相当します。つまり、隣接する周波数ビンの間は、前述のようなベクトルの回転をふくめればなんとか計算できることになります。

 逆にサンプル数Nを1/10にしても同じことで(FFTでは2の倍数の制約があるので現実的ではありませんが)、周波数ビンの間隔が10倍になる代わりに測定時間分解能は1/10になります。

 まとめると、「周波数ビン」という「目盛り」を一定にしたいなら、『測定時間(時間分解能)とサンプリング周波数は反比例の関係』にあり、サンプリング周波数を一定にするなら、周波数ビン(=目盛り)と測定時間(時間分解能)はこれも反比例の関係。

 DFT/FFTでいう周波数ビンの間隔=周波数分解能を高くすると、測定時間が長くなるジレンマが存在するわけです。

 一般的には「フーリエ変換の不確定性」と呼ばれていますが、不確定性の厳密な定義はちょっとややこしいです。時系列波形s(t), スペクトルのS(ω) の「1次モーメント」(=平均持続時間、平均周波数)と「2次モーメント」(=平均時間窓、周波数分解能)で定義されます。 参考: L.Cohen/吉川、佐藤訳 時間-周波数解析 (朝倉書店) 

 以上サンプリング周波数fsとサンプル数Nの関係で説明したように、DFT/FFTのような離散系の例ではコーエンのような面倒な積分計算なしに、なにかしら周波数分解能と時間分解能のあいだにトレードオフがあることは、感覚的に理解できるでしょう。

 もうひとつ、DFT/FFTを使用する際には考慮しないといけない事項があります。DFT/FFTでは最低1サイクルの信号がないといけません。周波数ビン=1の位置にある周波数が周波数の下限となります。

 このことをふまえ電源の系統周波数(50,60Hz)を精密測定することを考えてみましょう。fs=44100 Hzという一般的なオーディオ用ADCを使用し、測定時間を概ね0.1秒にするなら、 N=4096が候補となります。周波数ビンは10.77Hzです。さらに一歩つっこんで、1mHzの周波数分解能を求めるなら、複素スペクトルの回転角度はおおまかに 1/10000回転=0.036度となります。

 はたして、得られたスペクトルからこの角度速度の計算は現実的な水準か。DFTを使用する1mHz on 50Hzの測定では技術的な課題となります。

 周波数スペクトル(複素数)の「回転」をどこまで精度良く求められるかが、周波数測定精度を決定してしまいます。次回は「複素ベクトルの回転の計算方法」について書きたいと思います。

一般的に知られる方法:スペクトルの実部・虚部から φ=arctan ( Im / Re ) と角度を求めておき、その角度の差分をとる以外にエレガントな方法があります。

 

 



最新の画像もっと見る

コメントを投稿