DSP 04 · DTFT(離散時間フーリエ変換)

Chapter 04

DTFT(離散時間フーリエ変換)

「フィルタの周波数特性」を正確に定義する道具が DTFT である。 Z 変換(05 章)は DTFT の拡張なので、まずここを固める。

この章がやろうとしていること. 02 章で「フィルタの働きは周波数ごとの倍率表に要約できる」と分かった。 03 章で「フィルタは\(h[n]\)という 1 本の信号で完全に決まる」と分かった。

残る問題はこれ。手元にある\(h[n]\)(時間の波形)から、その倍率表をどうやって取り出すのか?

波形を見ても「低音を何倍にするフィルタか」は分からない。 時間の言葉(いつ、どんな値か)で書かれたものを、周波数の言葉(どの高さの音が、どれだけ含まれるか)に 翻訳する装置が要る。それが DTFT である。

やることは音楽で言えば「録音された音の塊を聴いて、ドの音がどれだけ、ミの音がどれだけ含まれるか当てる」作業。 人間の耳が無意識にやっているこの分解を、数式で機械的に実行する方法、と思えばよい。

この章で使う既出の用語(定義は各リンク先). \(\delta[n]\)・\(u[n]\)・インパルス分解(01 章 1 節)、正規化角周波数 \(\omega\)(01 章 2 節)、複素数・\(j\)・共役 \(z^*\)・偏角 \(\angle z\)(02 章 0 節)、オイラーの公式と \(\cos, \sin\) の複素指数表示(02 章 1〜2 節)、周波数応答 \(H(e^{j\omega})\)・振幅特性・位相特性(02 章 4 節)、等比級数(02 章 5 節)、ローパス(03 章 1 節)、線形性(03 章 2 節)、インパルス応答 \(h[n]\)・畳み込み(03 章 3 節)

1. 定義

信号\(x[n]\)の DTFT (Discrete-Time Fourier Transform):

\[ X(e^{j\omega}) = \sum_{n=-\infty}^{\infty} x[n] e^{-j\omega n} \]

(\(\sum_n |x[n]| < \infty\)、つまり各項の絶対値の和が有限——絶対収束——なら、右辺の実部の級数と虚部の級数がそれぞれ収束することが知られており、DTFT は存在する。)

直感

\(X(e^{j\omega})\)は「信号\(x[n]\)の中に、周波数\(\omega\)の回転成分\(e^{j\omega n}\)がどれだけの量と位相で含まれているか」を測る内積——ベクトルの内積 \(\sum_k a_k b_k\) と同じ「対応する成分どうしを掛けて足す」演算で、複素数では片方の共役を掛ける(ここでは \((e^{j\omega n})^* = e^{-j\omega n}\))——である。

なぜ「掛けて足す」だけで、狙った周波数だけ取り出せるのか. ここが DTFT の心臓部なので、回転する矢印のイメージで丁寧に見る。

信号の中には、いろんな速さで回る矢印(周波数成分)が混ざっている、と思ってほしい。 いま「速さ\(\omega\)で回る成分がどれだけ入っているか」を知りたい。そこで全体を逆向きに\(\omega\)で回してやる。 これが\(e^{-j\omega n}\)を掛ける操作である(マイナスが付いているのは逆回転だから)。

つまり「逆回転させてから全部足す」という操作は、狙った周波数だけを生き残らせるフィルタとして働く。 メリーゴーラウンドの上の 1 頭の馬を写真に撮りたいとき、 同じ速さで一緒に回りながら撮れば、その馬だけ止まって写り、背景は流れて消える——あれと全く同じ原理である。 (この「回っているものを 1 周ぶん足すと打ち消し合って 0」は 3 節 で厳密に計算する。)

「合唱の中から特定の人の声だけ聞き取るために、その人のリズムに合わせて首を振る」ようなイメージ。

記法について

引数を\(\omega\)でなく\(e^{j\omega}\)と書くのは、05 章 1 節の Z 変換\(X(z)\)に\(z = e^{j\omega}\)を代入したものが DTFT に一致するから。つまり DTFT = Z 変換を単位円上で評価したもの(先取り)。

2. DTFT の周期性(導出)

\[ X(e^{j(\omega + 2\pi)}) = \sum_n x[n] e^{-j(\omega+2\pi)n} = \sum_n x[n] e^{-j\omega n} \underbrace{e^{-j2\pi n}}_{=1(n\text{は整数})} = X(e^{j\omega}) \]

DTFT は必ず周期\(2\pi\)の周期関数。∎

直感: 01 章で見たとおり、離散信号では\(\omega\)と\(\omega + 2\pi\)は同じ信号を表すので、スペクトルも同じ値になるしかない。 これが「デジタルフィルタの周波数特性は\(0 \leq \omega \leq 2\pi\)を見れば足りる」理由。 さらに実係数なら\(|X(e^{-j\omega})| = |X(e^{j\omega})|\)の対称性(5 節(c) で導出する)があるため負側も冗長で、結局 \(0 \leq \omega \leq \pi\) だけ見ればよい。

3. 逆変換の導出

主張

\[ x[n] = \frac{1}{2\pi} \int_{-\pi}^{\pi} X(e^{j\omega}) e^{j\omega n} d\omega \]

準備: 複素指数の直交性

「2 つの回転成分 \(e^{j\omega n}\) と \(e^{j\omega k}\) について、片方の共役を掛けて \(\omega\) で 1 周期分積分すると、\(n = k\) のときだけ残り、\(n \neq k\) なら 0 になる」—— ベクトルの内積が 0 になるのと同じ意味で、これを複素指数の直交性と呼ぶ。\(m = n - k\) と置いて、任意の整数\(m\)について次を計算する:

\[ I(m) = \frac{1}{2\pi} \int_{-\pi}^{\pi} e^{j\omega m} d\omega \]

場合 1:\(m = 0\) — 被積分関数は 1 なので\(I(0) = \frac{1}{2\pi} \cdot 2\pi = 1\)。

場合 2:\(m \neq 0\) — 原始関数は\(\frac{e^{j\omega m}}{jm}\)なので:

\[ I(m) = \frac{1}{2\pi} \left[\frac{e^{j\omega m}}{jm}\right]_{-\pi}^{\pi} = \frac{e^{j\pi m} - e^{-j\pi m}}{2\pi j m} = \frac{2j \sin(\pi m)}{2\pi j m} = \frac{\sin(\pi m)}{\pi m} = 0 \]

(\(e^{j\theta} - e^{-j\theta} = 2j\sin\theta\)(02 章 2 節)を使った。\(m\)が 0 でない整数なら\(\sin(\pi m) = 0\)。)

まとめると(\(\delta[m]\) は 01 章の単位インパルス。\(m = 0\) で 1、それ以外で 0):

\[ \frac{1}{2\pi} \int_{-\pi}^{\pi} e^{j\omega m} d\omega = \delta[m] \]

直感: 回転する複素指数を一周期分積分すると、ちょうど円を整数周して打ち消し合い 0 になる。回らない (\(m=0\)) ときだけ 1 が残る。

本体の導出

逆変換の右辺に DTFT の定義を代入する(総和のダミー変数を\(k\)にしておく):

\[ \frac{1}{2\pi} \int_{-\pi}^{\pi} \left[\sum_{k=-\infty}^{\infty} x[k] e^{-j\omega k}\right] e^{j\omega n} d\omega \]

積分と和を交換(絶対収束する級数は、項ごとに積分してから足しても同じ、という解析学の事実を使う):

\[ = \sum_{k=-\infty}^{\infty} x[k] \frac{1}{2\pi}\int_{-\pi}^{\pi} e^{j\omega(n-k)} d\omega = \sum_{k=-\infty}^{\infty} x[k] \delta[n-k] = x[n] \qquad \blacksquare \]

(最後は 01 章 1 節のインパルス分解の式。)

直感

逆変換の式は「信号は、あらゆる周波数の回転成分\(e^{j\omega n}\)を、重み\(X(e^{j\omega})\)で混ぜ合わせたもの」と読める。 DTFT が「分解」、逆 DTFT が「合成」。

4. 畳み込み定理(導出) — フィルタリングの周波数領域での姿

主張

\[ y[n] = (x * h)[n] \quad \Longrightarrow \quad Y(e^{j\omega}) = X(e^{j\omega}) H(e^{j\omega}) \]

導出

\[ Y(e^{j\omega}) = \sum_{n=-\infty}^{\infty} y[n] e^{-j\omega n} = \sum_{n=-\infty}^{\infty} \left[\sum_{k=-\infty}^{\infty} x[k] h[n-k]\right] e^{-j\omega n} \]

和の順序を交換し、指数を\(e^{-j\omega n} = e^{-j\omega k} e^{-j\omega (n-k)}\)と分解する:

\[ = \sum_{k=-\infty}^{\infty} x[k] e^{-j\omega k} \sum_{n=-\infty}^{\infty} h[n-k] e^{-j\omega (n-k)} \]

内側の和で\(m = n-k\)と変数変換(\(k\)固定で\(n\)が全整数を動けば\(m\)も全整数を動く):

\[ = \sum_{k=-\infty}^{\infty} x[k] e^{-j\omega k} \sum_{m=-\infty}^{\infty} h[m] e^{-j\omega m} = X(e^{j\omega}) H(e^{j\omega}) \qquad \blacksquare \]

直感(これがフィルタ理論の中心的な絵)

時間領域の畳み込み(面倒な計算)は、周波数領域では単なる掛け算になる。

各周波数成分ごとに見れば、フィルタは「その周波数の倍率\(H(e^{j\omega})\)を掛けるだけ」の装置である (02 章の固有関数の議論と完全に整合する)。イコライザーのスライダーそのもの。

時間領域と周波数領域の対応
図: 上段の「畳み込み」と下段の「掛け算」が DTFT で結ばれている。どちらの経路を通っても同じ \(y[n]\) に着く——面倒な畳み込みを、周波数領域では各周波数の倍率を掛けるだけの計算に置き換えられる。

5. よく使う DTFT の性質(導出付き)

以下、\(\mathcal{F}\{x[n]\}\)は「\(x[n]\)の DTFT」すなわち\(X(e^{j\omega}) = \sum_n x[n]e^{-j\omega n}\)を表す記号とする。

(a) 線形性

\[ \mathcal{F}\{a x_1[n] + b x_2[n]\} = \sum_n (a x_1[n] + b x_2[n]) e^{-j\omega n} = a\sum_n x_1[n] e^{-j\omega n} + b\sum_n x_2[n] e^{-j\omega n} = a X_1 + b X_2 \]

(b) 時間シフト

\[ \mathcal{F}\{x[n - n_0]\} = \sum_n x[n-n_0] e^{-j\omega n} \]

\(m = n - n_0\)と置換:

\[ = \sum_m x[m] e^{-j\omega(m + n_0)} = e^{-j\omega n_0} \sum_m x[m] e^{-j\omega m} = e^{-j\omega n_0} X(e^{j\omega}) \qquad \blacksquare \]

直感: 時間の遅れは、スペクトルの大きさを変えず位相だけを周波数に比例して回す(\(-\omega n_0\))。 位相特性(周波数ごとの位相のずれ \(\angle X(e^{j\omega})\))が \(\omega\) に比例する直線 \(-\omega n_0\) になることを線形位相と呼ぶ。「遅延 = 線形位相」という事実は位相特性を読むときの基準になる。

(c) 実信号の共役対称性

\(x[n]\)が実数のとき:

\[ X(e^{-j\omega}) = \sum_n x[n] e^{j\omega n} = \left(\sum_n x[n] e^{-j\omega n}\right)^* = X(e^{j\omega})^* \]

(共役は和と積に分配でき、実数\(x[n]\)は共役をとっても変わらず、\((e^{-j\omega n})^* = e^{j\omega n}\) であるため。) よって\(|X(e^{-j\omega})| = |X(e^{j\omega})|\)(振幅特性は偶関数)、\(\angle X(e^{-j\omega}) = -\angle X(e^{j\omega})\)(位相特性は奇関数)。∎

6. 例: 1 次の指数減衰信号の DTFT(導出)

IIR の最小構成要素になる信号\(x[n] = a^n u[n]\)(\(|a| < 1\)。\(u[n]\) は単位ステップで、\(n \geq 0\) のとき \(a^n\)、それ以前は 0)を変換する:

\[ X(e^{j\omega}) = \sum_{n=0}^{\infty} a^n e^{-j\omega n} = \sum_{n=0}^{\infty} \left(a e^{-j\omega}\right)^n \]

これは公比\(r = a e^{-j\omega}\)の等比級数。\(|r| = |a| < 1\)なので収束し(02 章の公式):

\[ X(e^{j\omega}) = \frac{1}{1 - a e^{-j\omega}} \]

振幅特性を計算する(\(a\)は実数とする)。\(|z|^2 = z z^*\) で、\(X\) の共役は分母の共役 \(1 - a e^{j\omega}\) を取ったものなので:

\[ |X(e^{j\omega})|^2 = X(e^{j\omega}) X(e^{j\omega})^* = \frac{1}{(1 - a e^{-j\omega})(1 - a e^{j\omega})} = \frac{1}{1 - a(e^{j\omega} + e^{-j\omega}) + a^2} = \frac{1}{1 - 2a\cos\omega + a^2} \]

(\(e^{j\omega} + e^{-j\omega} = 2\cos\omega\)(02 章 2 節)を使用。)

\(0 < a < 1\)の場合の挙動:

つまり低い周波数を通し高い周波数を削るローパス特性。\(a\)が 1 に近いほど\(\omega=0\)でのピークが鋭くなる。 (\(-1 < a < 0\) なら \(\cos\omega\) の符号が逆に効いて \(\omega = \pi\) で最大になり、ハイパス特性になる。) 07 章で見る 1 次 IIR ローパスフィルタの周波数特性はまさにこれである。

指数減衰信号の DTFT
図: 左はこの\(|X(e^{j\omega})|\)を広い範囲で見たもの — 2 節 で導出した周期\(2\pi\)と左右対称性が現れており、情報は青帯\([-\pi,\pi]\)(実質\([0,\pi]\))に全部ある。右は\(a\)を変えたときのローパス特性の変化。