第5章

離散時間フーリエ変換

この章のねらい

  • 離散時間信号をデルタ列とみなして DTFT の式 X(e^{jω})=Σx[n]e^{-jωn} を導ける
  • スペクトルが必ず 2π 周期になる理由を n が整数であることから説明できる
  • 逆変換が [-π, π] の1周期分の積分で済む理由を理解する

5.1 離散時間信号をフーリエ変換する

やる夫

第4章で、信号がコンピュータの中では x[n]x[n] っていう数列になるって分かったお。で、第1〜3章では波を周波数に分解する道具(フーリエ変換)を手に入れたお。次にやることは…合体だお? 数列をフーリエ変換するんだお。

やらない夫

その通りだ。話の流れが読めてきたな。離散時間信号 x[n]x[n] のスペクトルを求めたい。だがここで素直な疑問がある。フーリエ変換の式 (3.1) は

F(ω)=f(t)ejωtdtF(\omega) = \int_{-\infty}^{\infty} f(t)\, e^{-j\omega t}\, dt

と、tt積分していた。x[n]x[n] はとびとびの数列で、積分する連続関数が無い。どうする?

やる夫

うーん…。積分は「連続的に足す」ことだったお。数列なら、ふつうに「とびとびを足す」、つまりでいいんじゃないかお?

やらない夫

直感は正しい。だが、なぜ和でいいのかをきちんと納得しておきたい。そのために、離散時間信号を一度だけ連続信号の言葉に翻訳してみる。x[n]x[n] は時刻 nTnT の値だったな。これを「時刻 nTnT に重み x[n]x[n] のデルタ関数を立てたもの」だと考える。

xδ(t)=n=x[n]δ(tnT)(5.1)x_\delta(t) = \sum_{n=-\infty}^{\infty} x[n]\, \delta(t - nT) \tag{5.1}
やる夫

デルタ関数、第3章で出てきた「幅ゼロ・面積1のトゲ」だお。数列の各値を、その重さのトゲに化けさせたわけかお。

やらない夫

そうだ。トゲの列なら連続時間の関数として扱えるから、式 (3.1) にそのまま放り込める。デルタ関数の「つまみ出し性質」(3.4) が効いて、

Xδ(ω)=(nx[n]δ(tnT))ejωtdt=nx[n]ejωnT(5.2)X_\delta(\omega) = \int_{-\infty}^{\infty} \left( \sum_n x[n]\, \delta(t - nT) \right) e^{-j\omega t}\, dt = \sum_n x[n]\, e^{-j\omega nT} \tag{5.2}

積分とデルタ関数が握手して、きれいにが残った。やる夫の直感どおりだろ。

やる夫

おお、ちゃんと和になったお。デルタ関数って、連続と離散の橋渡し役なんだお。

やらない夫

いい言い方だ。式 (5.2) の指数の肩には、まだ連続時間角周波数 ω\omega(ここでは式 (3.1) の連続側の意味)と TT が残っている。だがここで第4章の主役を思い出せ。ωT\omega T はいつもセットで現れて、正規化角周波数になるんだったな。

やる夫

ω=ΩT\omega = \Omega T、「1サンプルあたりに進む位相」だお。…あ、肩の ωnT\omega n T が、正規化角周波数を使えば ωn\omega n にまとまるお!

やらない夫

その通り。記号を整理する。これ以降、肩に乗っているのは正規化角周波数(小文字 ω\omega、単位 rad/サンプル)だと約束する。すると TT は表から消えて、純粋に数列 x[n]x[n] だけで書ける式になる。

5.2 離散時間フーリエ変換

やらない夫

整理した式に名前を付ける。これが離散時間フーリエ変換(Discrete-Time Fourier Transform、略して DTFT)だ。

X(ejω)=n=x[n]ejωn(5.3)X(e^{j\omega}) = \sum_{n=-\infty}^{\infty} x[n]\, e^{-j\omega n} \tag{5.3}

数列 x[n]x[n] に、調べたい周波数 ω\omega の複素正弦波 ejωne^{-j\omega n} を掛けて、全サンプルにわたって足し合わせる。フーリエ変換 (3.1) の積分が和に変わっただけで、心は完全に同じだ。

やる夫

待つお。左辺の書き方が変だお。X(ω)X(\omega) じゃなくて X(ejω)X(e^{j\omega}) ってなってるお。なんでわざわざ ejωe^{j\omega} を変数みたいに書くんだお? ω\omega の関数なんだから X(ω)X(\omega) でよくないかお?

やらない夫

鋭い。これはわざとだ。式 (5.3) の右辺をよく見ろ。ω\omega は必ず ejωne^{-j\omega n}、つまり (ejω)n(e^{j\omega})^{-n} という形でしか出てこない。スペクトルは「ω\omega そのもの」より「ejωe^{j\omega} という単位円上の点」の関数だと見るほうが本質に近い。z=ejωz = e^{j\omega} と置けば右辺は x[n]zn\sum x[n]\, z^{-n} で、これは後の章でやる zz 変換そのものだ。X(ejω)X(e^{j\omega}) という書き方は、その伏線を兼ねている。

やる夫

なるほど…。X(ejω)X(e^{j\omega}) の表記には「これは単位円上の話で、いずれ円の外も考えるぞ」って予告が込められてるのかお。手が込んでるお。

やらない夫

さて、この式には離散時間ならではの大事な性質が1つ宿っている。式 (5.3) の ω\omegaω+2π\omega + 2\pi に置き換えてみろ。

やる夫

やってみるお。ej(ω+2π)n=ejωnej2πne^{-j(\omega + 2\pi)n} = e^{-j\omega n}\, e^{-j2\pi n} だお。で、nn は整数だから ej2πne^{-j2\pi n} は…ちょうど何周か回って 11 だお! また消えたお!

やらない夫

そうだ。だから

X(ej(ω+2π))=nx[n]ejωnej2πn=1=X(ejω)(5.4)X(e^{j(\omega + 2\pi)}) = \sum_n x[n]\, e^{-j\omega n}\, \underbrace{e^{-j2\pi n}}_{=\,1} = X(e^{j\omega}) \tag{5.4}

DTFT は必ず 2π2\pi 周期になる。これは特別な信号だけの話ではなく、nn が整数でありさえすればどんな x[n]x[n] でも成り立つ、DTFT の宿命だ。

やる夫

第4章の「ω\omegaω+2π\omega + 2\pi は同じ信号」(4.5) と同じ理屈だお。時間が離散だと周波数が 2π2\pi で繰り返す、と。

やらない夫

まさにそれだ。そして第3章の最後の予告 (3.8) を覚えているか。「時間側が周期的だと、周波数側は離散的になる」。今その鏡写しが起きている。

  • 時間が連続・非周期(普通の信号)→ 周波数も連続・非周期(フーリエ変換)
  • 時間が離散(数列)→ 周波数が周期的(DTFT、周期 2π2\pi

「離散」と「周期的」が時間軸と周波数軸の間で入れ替わって対応する。この双対は、この先のサンプリング定理(第10章)でも DFT(次章)でも、形を変えて何度も顔を出す。下のデモで、いくつかの信号の振幅スペクトル X(ejω)|X(e^{j\omega})| を見てみろ。

DTFT EXPLORER INTERACTIVE
インパルス・矩形・指数減衰と信号を切り替える(操作)→ 山の中身は信号ごとに違うのに、どれも 2π ごとに同じ形(灰の細線)を繰り返す(観察)→ x[n] の n が整数だから DTFT は必ず 2π 周期になり、緑の [-π, π] 1周期分だけ見れば足りる(意味)。
やる夫

ほんとだお。インパルス δ[n]\delta[n] を選ぶとスペクトルが真っ平ら(全周波数が等しく 11)。これ、第3章の「デルタ ⇄ 定数1」(3.5) の離散版だお。で、どの信号でも緑の山が 2π2\pi ごとにコピーされて並んでるお。

やらない夫

よく観察した。矩形パルスを選んで長さ LL を変えると、sin\sin の比でできた山がうねる。指数減衰 0.8nu[n]0.8^n u[n] なら ω=0\omega = 0 で一番高くてなだらかに落ちる。中身は信号ごとに違うが、2π2\pi 周期だけは全員に共通だ。だから DTFT を見るときは、無限に続く繰り返しのうち [π,π][-\pi, \pi] の1周期だけ見れば十分なんだ。

5.3 離散時間フーリエ逆変換

やらない夫

順方向 (5.3) で数列からスペクトルを作った。逆に、スペクトル X(ejω)X(e^{j\omega}) から元の数列 x[n]x[n] を取り戻す式が離散時間フーリエ逆変換だ。

x[n]=12πππX(ejω)ejωndω(5.5)x[n] = \frac{1}{2\pi} \int_{-\pi}^{\pi} X(e^{j\omega})\, e^{j\omega n}\, d\omega \tag{5.5}
やる夫

第3章の逆変換 (3.2) と似てるけど、違いが2つあるお。積分範囲が全実数じゃなくて π-\pi から π\pi までだお。それと、こっちは左辺が x[n]x[n] で和じゃなくて積分なのが、なんか逆な感じだお。

やらない夫

両方とも本質を突いている。1つ目から。なぜ積分が [π,π][-\pi, \pi] の1周期で済むか。X(ejω)X(e^{j\omega})2π2\pi 周期で、その外は同じ形の繰り返しだったな。同じ情報を何周分も積分しても無駄なだけだ。元の数列を復元するのに必要な情報は1周期分にすべて入っているから、1周期 [π,π][-\pi, \pi] を積分すれば足りる

やる夫

なるほど。2π2\pi 周期だから、わざわざ全部見なくても1周ぶんで用が足りるんだお。第3章では時間が非周期だったから全時間を積分するしかなかったけど、こっちは周期的になったぶん範囲が有限で済む、と。

やらない夫

その対比のつかみ方がいい。2つ目の「順が和・逆が積分」というねじれも、まさに今の双対の表れだ。順方向は離散な時間 nnを取り、逆方向は連続な周波数 ω\omega積分する。時間と周波数で「離散↔連続」が入れ替わっているから、足し方も「和↔積分」で入れ替わる。

やる夫

確かめたいお。式 (5.5) で本当に元に戻るのかお? なんとなく信じきれないお。

やらない夫

簡単な場合で確かめてみよう。x[n]=δ[n]x[n] = \delta[n]n=0n=0 だけ 11、あとは 00)なら、DTFT は (5.3) より X(ejω)=ejω0=1X(e^{j\omega}) = e^{-j\omega \cdot 0} = 1。これを逆変換 (5.5) に入れると

x[n]=12πππ1ejωndωx[n] = \frac{1}{2\pi} \int_{-\pi}^{\pi} 1 \cdot e^{j\omega n}\, d\omega

n=0n = 0 なら被積分関数は 11 で、積分は 2π2\pi1/2π1/2\pi を掛けて x[0]=1x[0] = 1n0n \ne 0 なら ejωne^{j\omega n}[π,π][-\pi, \pi] で積分すると、sin\sin が端でぴったり打ち消し合って 00。ちゃんと δ[n]\delta[n] に戻った。1/2π1/2\pi という係数は、この帳尻を合わせるために付いている。

やる夫

おお、n=0n=0 だけ生き残って、ほかは消えるお。係数の 1/2π1/2\pi にもちゃんと役目があったんだお。納得したお。

やる夫

ここまでで「数列のフーリエ変換」は完成したお。でも1つ気になるお。X(ejω)X(e^{j\omega})ω\omega は連続変数だお。コンピュータに、連続的な ω\omega 全部の値なんて持てないんじゃないかお? 第4章で「連続信号は持てない」って言ってたのと同じことが、周波数側で起きてる気がするお。

やらない夫

…とてもいいところに気づいた。それがまさに次章の出発点だ。DTFT は理論としては完璧だが、ω\omega が連続なせいでそのままではコンピュータに乗らない。時間を離散化したのと同じ手口を、今度は周波数に対してやる。そうして生まれるのが離散フーリエ変換(DFT)、実際の計算で使う本命だ。

この章のまとめ
  • 離散時間信号 x[n]x[n] をデルタ列 x[n]δ(tnT)\sum x[n]\delta(t-nT) とみなしてフーリエ変換すると、積分が和になり DTFT X(ejω)=nx[n]ejωnX(e^{j\omega}) = \sum_n x[n] e^{-j\omega n} が得られる
  • 表記 X(ejω)X(e^{j\omega}) は「単位円 z=ejωz=e^{j\omega} 上の値」を意味し、zz 変換への伏線でもある
  • nn が整数なので X(ej(ω+2π))=X(ejω)X(e^{j(\omega+2\pi)}) = X(e^{j\omega})DTFT は必ず 2π2\pi 周期
  • 第3章の「時間が周期的⇔周波数が離散」の鏡写し=「時間が離散⇔周波数が周期的」が成り立つ
  • 逆変換は x[n]=12πππX(ejω)ejωndωx[n] = \frac{1}{2\pi}\int_{-\pi}^{\pi} X(e^{j\omega}) e^{j\omega n} d\omega2π2\pi 周期なので積分は1周期分で足りる
  • 残る問題: ω\omega が連続なので DTFT はそのままではコンピュータに乗らない(次章 DFT へ)