seegongsik
SC · サンプリングと離散

DTFT と DFT

DTFT は離散信号の本当の周波数スペクトルで、z 変換を単位円の上で見たものです。DFT はその連続スペクトルを、コンピュータが計算できるよう N 個の周波数で標本化したものです。この講では信号の周波数を動かし、それが DFT の目盛りにぴったり合えばきれいな一点に、目盛りの間にはさまれば何マスにも漏れる漏れが現れることを確かめます。

目盛りに合えば一点、ずれれば漏れ

上の図は長さ N = 16 の離散コサイン x[n] = cos(ω₀n) です。下の図の金色の曲線はその DTFT の大きさ、つまり ω を 0 から π まで連続になぞった本当のスペクトルで、青い棒は ω = 2πk/N に置かれた DFT の目盛りでその曲線を標本化した値です。目盛りの間隔は 2π/16 ≈ 0.39 rad で、灰色の点線が信号の本当の周波数 ω₀ です。最初の ω₀ = 0.98 は目盛り k = 2 と 3 のほぼ真ん中なので、エネルギーが何マスにも漏れます。ω₀ を青い目盛りの一つにぴったり合わせると、そのマスだけが立ち上がり残りのマスは 0 になる、きれいな一点が現れます。

離散コサイン x[n] = cos(ω₀n), N=16
DTFT の大きさ(金の曲線)と DFT 目盛り(青の棒)
信号周波数 ω₀0.98 rad
信号周波数と DFT 目盛り
ω₀ = 0.98 · N = 16 · 目盛り間隔 Δ = 2π/N = 0.39
最も近い目盛り k = 2 · ω = 0.79
信号の周波数 ω₀ が二つの DFT 目盛りの間にはさまっています(最も近い目盛りから目盛り間隔の 1/4 より離れている)。どの目盛りも DTFT の山の頂上には乗らず、残りの目盛りも 零点ではなく山の斜面や横の山を標本化するので、エネルギーが何マスにも広く漏れます。これがスペクトル漏れです。
目盛りの間 (漏れ)

単位円の上で見るスペクトル

離散信号 x[n] の DTFT は X(e^(jω)) = Σₙ x[n] e^(−jωn) です。これは E3 ユニットの z 変換 X(z) = Σ x[n] z⁻ⁿ で z を単位円上の z = e^(jω) に置いたものとまったく同じなので、DTFT は z 平面の単位円を一周しながら見たスペクトルであり、システムについては周波数応答になります。目立つ特徴は周期性です。e^(−jωn) が ω について 2π 周期なので DTFT も 2π ごとに同じように繰り返され、これは E1 ユニットで見た「標本化はスペクトルを fs ごとに複製する」という事実の別の顔です。そのため離散信号のスペクトルは −π から π までの一区間だけを見れば十分で、実数信号なら 0 から π までの半分で足り、最初の画面の図もその半分を描いています。

観察DTFT X(ejω) = Σₙ x[n] e−jωn
DTFT は離散信号のスペクトルです。
選ぶDTFT = X(z), z = ?
DTFT は単位円の上で見た z 変換です。
空欄DFT X[k] = X(ejω), ω = ?
DFT は DTFT を N 個の点で標本化したものです。
自分でDFT の高速アルゴリズム = ?
FFT は DFT を N log N 程度で計算します。

コンピュータが計算する DFT

DTFT は ω が連続なので値が無限にあります。コンピュータは無限を計算できないので、一周期 2π を N 等分した ω = 2πk/N (k = 0, …, N−1) でだけ値を取り出し、これが DFT X[k] = Σₙ x[n] e^(−j2πkn/N) です。有限の N 個の入力から有限の N 個の出力を出し、DTFT の曲線を N 個の目盛りで標本化したものと同じです。DFT をそのまま計算すると掛け算が N² 回かかりますが、1965 年にクーリーとテューキーが発表した FFT がこれを N log N 程度に減らし、デジタル信号処理を実用の世界へ引き寄せました。時間領域の畳み込みは DFT 領域では掛け算になるので(互いに重なって巻きつかないよう 0 を付け足す)、長いフィルタも FFT で速く動かせます。

目盛りに外れた周波数の漏れ

信号を有限の N 個だけ切り取って使うと、その切り取りの窓のせいで、DTFT は幅のある山(メインローブ)とその横に並ぶ小さな山(サイドローブ)をもつ形になります。信号の周波数 ω₀ が目盛り 2πk/N にぴったり合えば、その目盛りはメインローブの頂上に、残りの目盛りはちょうどサイドローブの間の 零点に乗って、きれいな一点になります。しかし ω₀ が目盛りの間にはさまると、すべての目盛りがメインローブの斜面かサイドローブを標本化し、エネルギーが何マスにも漏れるスペクトル漏れが起こります。これを減らすために切り取るときに両端をなめらかに削る窓関数(ハニング、ハミングなど)を使うと、サイドローブが下がって漏れは減りますが、メインローブが広がって近い二つの周波数を見分ける力は落ちます。分解能と漏れを引き換えにするわけです。

最初の画面に戻ると

最初の画面では、長さ N = 16 の離散コサイン一つについてそのスペクトルを見ました。金色の DTFT 曲線は ω を連続になぞった本当のスペクトルで、青い DFT の棒はその曲線を N 個の目盛りで標本化した値でした。信号の周波数 ω₀ を目盛り 2πk/N にぴったり合わせると、一マスだけが立ち上がり残りは 0 のきれいな一点が現れ、目盛りの間へ動かすとエネルギーが何マスにも漏れる様子が見えました。DFT は DTFT の標本にすぎず、DTFT は z 変換を単位円の上で見たものです。信号の基礎から始まり、畳み込み、フーリエ、ラプラス、標本化を経てきた解析の道具の連なりが、ここ離散スペクトルで一周します。

DTFT X(ejω) = Σₙ x[n] e−jωn は離散信号のスペクトルで、z 変換を単位円 z = ejω で見たものであり、ω について 2π 周期です(離散化の結果)。DFT X[k] = Σ x[n] e−j2πkn/N はその DTFT を ω = 2πk/N の N 個の点で標本化した有限で計算可能な版で、FFT がそれを N log N 程度で速く計算します。信号の周波数が目盛りに合えばきれいな一点、目盛りの間ならスペクトル漏れが現れます(有限の窓が作るサイドローブ)。窓関数で漏れを減らすと、その代わりに分解能が落ちます。
次の章へ

これで信号とシステムを解析する道具がすべてそろいました。時間軸で見て、フーリエ、ラプラス、z で変換し、標本化してデジタルで扱う方法まで身につけました。最後の章では、向きが解析から設計へ変わります。次のユニット 安定度とラウス判別法 の最初の問いはシステムをどう安定にするかで、極を直接求めずに特性方程式の係数だけからすべての極が左半面にあるかを見分けるラウス表を立てます。極を解くのが難しい高次のシステムでも安定かどうかを手で判定できるようになり、続いて根軌跡とボード線図で制御器を設計していきます。