有限長で切り出した正弦波のDTFTとDFT



正弦波周期 32 スペクトル縦軸 線形 dB
窓の長さ 32 窓関数 矩形 hann hamming Blackman

画面の説明

離散時間正弦波信号とそのDFTスペクトル計算において,有限長での切り出し(窓関数の乗算)と,周波数領域での離散化(=時間領域での周期化)がどのような影響を及ぼすかについて示します.上段のグラフは,窓関数をかけた正弦波を窓の長さで周期化したもので,窓関数の適用と周期化によって元の正弦波と異なる場合は元の信号を緑色の線で示しています.DFTスペクトルは正弦波に対して切り出しと周期化操作を行った周期信号の離散時間フーリエ級数 (DTFS) と等価です. 下段のグラフは振幅スペクトルです.

スライダーで離散時間正弦波の周期と,切り出す長さ(窓の長さ)を変えて観察してください. 単純な切り出し(矩形窓)で窓の長さが正弦波周期の整数倍の場合,窓関数をかけて窓の長さで周期化した信号は元の正弦波と同一です.このとき,観察されるDFTスペクトルは原信号と同じ周波数成分しか持たないきれいな線スペクトルになります.それ以外の場合,本来の周波数ではない周波数成分が観察されます. なお,縦軸は定義通りのDFTだとピークの値が窓長によって大きく変化するため,窓長で割った値を表示しています.

解説

一般的な離散時間信号を周波数スペクトルへ変換する理論的な手法は離散時間フーリエ変換 (DTFT: Discrete-Time Fourier Transform)ですが,真のDTFTを計算するには無限の過去から無限の未来までの信号値が必要ですので,現実には実行不可能です. そこで,無限長の信号から有限長の区間を切り出して(窓関数をかけて)有限長の信号を解析することになります. 我々がディジタル信号処理で常用する高速フーリエ変換 (FFT: Fast Fourier Transform)離散フーリエ変換(DFT: Discrete Fourier Transform)の高速計算アルゴリズムですので,本来の信号のスペクトル (DTFT) と現実的な解析で得られるスペクトル (DFT) との相違を理解しておくことは重要です.DTFTとDFTは名前が似ていて紛らわしいですが,別のものです.

DTFT:
\(\displaystyle X(e^{j\omega}) = \sum_{n=-\infty}^\infty x[n] e^{-j\omega n} \)
DFT:
\(\displaystyle X[k] = \sum_{n=0}^{N-1} x[n] e^{-j\omega_k n}, \qquad \omega_k = \frac{2\pi k}{N} \)

両者を比較すると,DTFTとDFTの違いは,以下の点にあることがわかります.

  1. DTFTでは無限の過去から無限の未来までの信号値を使うのに対し,DFTでは0からN-1までのN点の範囲に限定
  2. DTFTでは正規化角周波数 \(\omega\) の値が連続変数であるのに対し,DFTは正規化角周波数の値を離散値とし,DTFTスペクトルをその周波数で標本化したもの.(周波数領域での標本化は,時間領域での周期化と等価.)

正弦波は本来単一の周波数しか持ちませんが,DFT/FFTで計算したスペクトルにおいて本来の正弦波周波数でない周波数成分が観察される理由は,上記の相違と対応しており,次のようになります.

  1. 本来無限長の信号を有限長に切り出す時点でスペクトル変形が発生します.有限長で切り出す操作は,時間領域で原信号と窓関数との積をとることなので,周波数領域では原信号スペクトルと窓関数スペクトルとの畳み込みになります.正弦波の場合,原信号のスペクトルはプラスマイナスの周波数に立っているインパルス(デルタ関数)ですから,有限長で切り出した(窓関数をかけた)正弦波のDTFTスペクトルは,窓関数のDTFTスペクトルをプラスマイナスの正弦波周波数へシフトして2つを足し合わせたものです.
  2. DFTスペクトルは,窓関数をかけた信号のDTFTスペクトルを周波数領域において等間隔で標本化したものですので,原信号の周波数が標本化される周波数と一致する場合以外,つまり窓の長さが原信号周期の整数倍でない場合,ずれが生じます.窓の長さが原信号周期の整数倍の場合,窓関数をかけて周期化した信号は原信号と一致し,DFTスペクトルは周期信号の離散時間フーリエ級数係数と等価です.このとき,周波数領域での標本化は正弦波の周波数以外では周波数シフトした窓関数の振幅スペクトルがゼロのところで行われるため,本来の周波数以外の成分は観察されません.

このページでは原理的な事項を説明するため長さの短い窓関数を使っていますが,実際の周波数解析では通常はるかに長い窓関数を使用しますので,周波数分解能は高くDFT/FFTにおける周波数の離散性を意識することは少ないかもしれません.しかし,DFT/FFTを利用する以上,計算されるスペクトルの周波数があくまで離散的であるとともに,窓関数をかけることの影響についてを知っておくことは重要であると思われます.


変更履歴:
2022/08/04 初版:「正弦波信号のDFTスペクトル」を元に作成
2022/08/06 デシベル表示,矩形窓以外の窓関数を追加
2023/03/23 URL変更

作成:2022年8月4日