6. 離散フーリエ変換

6.1 離散時間フーリエ変換の困るところ

やらない夫
これまで,フーリエ級数から始めて,フーリエ変換に進み,そして前回は離散時間フーリエ変換を学んだわけだ.

やる夫
そうだお.離散時間フーリエ変換がわかったので,これで晴れて離散時間信号の周波数スペクトルを計算できるようになったわけだお.

やらない夫
うーん,ま,そう言っても間違いではないな.

やる夫
何でそんな歯切れの悪い感じなんだお?

やらない夫
計算できるのは確かにその通りなんだ.机の上ではな.ところが,コンピュータの中で計算できるかって話になると,ちょっと手放しでは喜べない.

やる夫
んー,どういうことだお.

やらない夫
ちょっと離散時間フーリエ変換と逆変換の公式をもう一回書いてみてくれ.

やる夫
えーと,式 (5.3) と (5.8) だお.

$\displaystyle F(\omega)$ $\displaystyle = \sum_{n = -\infty}^{\infty} f[n] e^{-j\omega n}$ (5.3)
$\displaystyle f[n]$ $\displaystyle = \frac{1}{2\pi}\int_{-\pi}^{\pi} F(\omega) e^{j\omega n} d\omega$ (5.8)

やらない夫
ま,とりあえず式 (5.3) の離散時間フーリエ変換の方はよしとしようか.ある角周波数 $ \omega$ を固定して右辺を計算すれば,その周波数の成分が計算できる.もちろん無限和は計算できないけど,現実世界に存在するの信号は有限の長さだからな.有限個の総和で計算できる.問題は式 (5.8) の逆変換だ.

やる夫
んー,逆変換だって,何か時間 $ n$ を固定して右辺の積分を計算するだけ…あ,そうか,積分しなきゃならないんだお.

やらない夫
そこだ.時間は離散化されたけど,周波数は連続のままだからな.積分は計算機では厳密には計算できない.

やる夫
じゃあ,周波数も離散化すればいいんだお!

やらない夫
おお,空気読めるじゃないか.今回はその話だ.

6.2 周波数領域を離散化する

やらない夫
さて,周波数領域が離散化されているためには,時間領域ではどうなっている必要があると思う?

やる夫
うっ,えーと,どうだったかお.時間領域で離散化したときは,周波数領域でスペクトルが周期的になったんだお.時間と周波数をひっくり返して考えると,「周波数を離散化すると時間領域では周期的になる」ってことでいいのかお?

やらない夫
その通りだ.落ち着いて思い出してみて欲しいんだが,フーリエ級数ってまさにそうだったろ.

やる夫
ああ,そういえば,時間の周期関数を飛び飛びの周波数成分に分解するのがフーリエ級数展開だったお.周波数領域で離散的になってるお.

やらない夫
今回考えるのは,周波数領域だけじゃなく,時間領域・周波数領域の両方で離散的にするって点がフーリエ級数とは違うところだ.

やる夫
ええと,そうすると…,時間領域でも周波数領域でも周期的になる…ってことかお?

やらない夫
そうなるな.時間も周波数も,離散的でかつ周期的ってことだ.

やる夫
おお,対称的だお.

やらない夫
整理しておこう.離散時間信号の周波数スペクトルは,一般の場合は,周期 $ 2\pi$ の周期的な連続スペクトルになる.ただし,その特殊な場合として,周期 $ N$ の周期的な時間信号の場合を考えると,周波数スペクトルは,周期 $ 2\pi$ で周期的で,かつ離散的なスペクトルになる.これならコンピュータで扱えそう,という寸法だ.

やる夫
時間領域でも周波数領域でも,有限個の数字の組で表されているわけだお.だからコンピュータで扱えるわけだお.

やらない夫
そういうことだ.ところで,周波数領域ではどんな間隔で離散化されていることになると思う?

やる夫
えーと,それはフーリエ級数のときと同じように考えればいいんだお.時間領域で周期 $ N$ ってことは,基本角周波数が $ 2\pi/N$ だってことだお.だから,周波数領域では $ 2\pi/N$ 間隔で離散化されていることになるお.

やらない夫
おお,わかってるじゃないか.

やる夫
馬鹿にしないでほしいお.

やらない夫
さて問題.周波数領域の周期 $ 2\pi$ の区間のうち,何箇所の点で周波数スペクトルは値を持つだろうか.

やる夫
え? 長さ $ 2\pi$ の区間で $ 2\pi/N$ ごとに値を持つんだから,$ N$ 点に決まってるお.わざわざ聞くほどのことかお?

やらない夫
強気だな.まあ答えとしてはそれで正解だ.ただし,時間と周波数の対称性という観点でこれをよく理解しておいて欲しい.時間領域で 1 周期あたり $ N$ 点からなる離散時間信号は,周波数領域でも 1 周期あたり $ N$ 点の離散周波数スペクトルになる.

やる夫
あー,なるほど,時間でも周波数でもちょうど $ N$ 点で 1 周するんだお.

やらない夫
これから導出するのは,そういう $ N$ 点の離散時間信号から $ N$ 点の離散周波数スペクトルへの変換とその逆変換だ.本来,離散時間・離散周波数フーリエ変換とでも呼ぶべきものだが,長いので普通は離散フーリエ変換 (Discrete Fourier Transform; DFT) と呼ぶ.

やる夫
そりゃまた大胆に略したお.

6.3 離散フーリエ逆変換

やらない夫
ということを踏まえた上で,式 (5.3) と (5.8) の離散時間フーリエ変換をもう一度見てみよう.

$\displaystyle F(\omega)$ $\displaystyle = \sum_{n = -\infty}^{\infty} f[n] e^{-j\omega n}$ (5.3)
$\displaystyle f[n]$ $\displaystyle = \frac{1}{2\pi}\int_{-\pi}^{\pi} F(\omega) e^{j\omega n} d\omega$ (5.8)

周期的でない離散時間信号の場合,離散時間フーリエ変換することで,周期 $ 2\pi$ で,連続的なスペクトルが得られるんだった.


\includegraphics[scale=0.5]{fig_dft/dtft_aperiodic.eps}

これが,$ f[n]$ が周期的な場合にどうなるかを考えてみるわけだ.まず,スペクトル $ F(\omega)$ が離散的になるってのは,これまで話して来た通りだ.じゃあ,各点の $ F(\omega)$ はどういう値になるか?

やる夫
式(5.3)を素直に考えると,$ F(\omega)$ の計算は,$ f[n]$ の 1 周期分の総和をさらに無限に足し合わせることになるから,無限大に発散するお.デルタ関数が一定間隔で並んだようなスペクトルになるお.


\includegraphics[scale=0.5]{fig_dft/dtft_periodic.eps}

やらない夫
そうだな.前回で,周期的スペクトルのフーリエ逆変換を考えたときと同じことが起きているわけだ.時間と周波数が逆だけどな.周期的でない時間信号の場合に連続的に広がっていたスペクトルが,一定間隔の飛び飛びの線の並びにギュッと圧縮されるイメージだ.

やる夫
ギュッと圧縮したから線の高さが無限大に伸びるって話を前に聞いたお

やらない夫
まあ,あくまでイメージだけどな.でもそういうイメージを持っておくのは重要だ.

で,逆変換である $ f[n]$ の計算の方は $ F(\omega)$ を積分するわけだが, $ 2\pi/N$ の間隔でデルタ関数が並んだ $ F(\omega)$ を長さ $ 2\pi$ の区間で積分するわけなので,要するにインパルス $ N$ 本の面積を足し合わせることになるわけだ.それによって,元の有限値の列 $ f[n]$ に戻るという仕組みだ.

やる夫
確かに前回と似たような話だお.

やらない夫
というわけで,離散時間フーリエ変換の枠組みで周期時間信号を考えようと思うと,無限大の値を持つ $ F(\omega)$ が出てくるわけだ.無限大のままじゃ不便だから,有限の値で表せるように改変したのが離散フーリエ変換という枠組みだ.

まずは,$ F(\omega)$ をこんな風に表すところから始める.

$\displaystyle F(\omega)$ $\displaystyle = \sum_{k = -\infty}^{\infty} c_k \delta(\omega - \frac{2\pi k}{N})$ (6.1)

やる夫
いきなりややこしい式だお.んー,そもそも $ c_k$ って何だお.

やらない夫
$ F(\omega)$ はインパルスを $ 2\pi/N$ おきに並べたものだっただろ. $ \omega = 2\pi k / N$ に立っているインパルスが,デルタ関数 $ \delta(\omega - 2\pi k / N)$$ c_k$ 倍の高さだとする.インパルスの「面積」が $ c_k$ だと考えてもいい.

やる夫
えーと,あ,そうか, $ c_k \delta(\omega -
\frac{2\pi k}{N})$ $ \omega = 2\pi k / N$ に立っているインパルスで,その付近だけを積分区間にとって積分すると $ c_k$ になるんだお.で,それを $ k
= -\infty \cdots \infty$ まで重ね合わせたのが $ F(\omega)$ になるんだお.

やらない夫
そうだな.$ F(\omega)$ が周期 $ 2\pi$ なのに対応して,$ c_k$ は周期 $ N$ だということに注意してくれ.

やる夫
$ c_0$$ c_1$,… と増えていって $ c_{N-1}$ の次の $ c_N$$ c_0$ と同じ値に戻るわけだお.

やらない夫
で,式 (5.8) の積分に,これを代入する.

$\displaystyle f[n]$ $\displaystyle = \frac{1}{2\pi}\int_{-\pi}^{\pi} \sum_{k = -\infty}^{\infty} c_k \delta(\omega - \frac{2\pi k}{N}) e^{j\omega n} d\omega$ (6.2)
  $\displaystyle = \frac{1}{2\pi} \sum_{k = 0}^{N-1} c_k e^{j \frac{2\pi k n}{N}}$ (6.3)

やる夫
えーと,デルタ関数を含む式の積分だから, $ \omega = 2\pi k / N$ のところの値だけが残るわけだお.…あれ? 総和の範囲は 0 から $ N-1$ までなのかお? 何かおかしくないかお?

やらない夫
ああ,そこはちょっと説明が必要だな.まず,長さ $ 2\pi$ の積分区間が $ N$ 本のインパルスを含んでいるってのはわかるだろう.だから連続する $ N$ 個の $ k$ について総和を取ることになるんだが,ほら,$ c_k$ は周期 $ N$ で繰り返すわけだろ.どの範囲で取っても同じだから,一番わかりやすそうな 0 から $ N-1$ までにしている.

やる夫
んー,それってわかりやすいかお? だってそれって,式 (5.8) でいうと 0$ 2\pi$ を積分区間に取ったようなものだお.今までみたいに $ -\pi$$ \pi$ に相当する範囲で総和を取る方がわかりやすいんじゃないかお?

やらない夫
ああ.実はそれは正しい指摘だ.ただし,今まで考えてきたフーリエ変換だって 0$ 2\pi$ を積分範囲に取っても全く問題ないってことに注意してくれ.単に慣習の問題でしかないと思っていい.離散フーリエ変換はどうしてもコンピュータで処理することを前提にして考えるからな.プログラムの中で配列とかを表すことを考えると, 0$ N-1$ を範囲にするってのは,まあ妥当な慣習かなと思う.配列のインデックスに負の数を取れないプログラミング言語が多いからな.

やる夫
ふーん,じゃ,まあそう思うことにしますお.

やらない夫
というわけで,ほとんどゴールにたどり着いているんだが,最後に,慣例に従って定数倍のところを変えておこうと思う. $ c_k = F[k] \cdot 2\pi / N$ となるような数列 $ F[k]$ を導入しよう.

やる夫
また天下りですかお.

やらない夫
まあ,そうなんだが,フーリエ変換対を定義するときにで定数倍の決め方が大して本質的でないのは,これまで見てきた通りだ.こう決める理由も後でわかる.

やる夫
ふーん,ま,いいお.

やらない夫
ともかく,さっきの式の $ c_k$ に代入する.その結果得られるのがこれだ.


これを離散フーリエ逆変換と呼ぶ.

やる夫
あれ? 逆変換? 離散フーリエ変換より先に逆変換が出てきたお.

やらない夫
そうだな.これまでの議論は,離散時間フーリエ「逆」変換の積分がコンピュータで計算できないのを何とかしようという流れだったので,逆変換が先に導出されるのはまあ自然なことだ.

6.4 離散フーリエ変換

やる夫
じゃあ離散フーリエ変換の方はどうなるのかお?

やらない夫
もちろん式 (5.3) が出発点になる.

$\displaystyle F(\omega)$ $\displaystyle = \sum_{n = -\infty}^{\infty} f[n] e^{-j\omega n}$ (5.3)

$ f[n]$ が周期的なとき, 左辺の $ F(\omega)$ ってのは, $ \omega = 2\pi k / N$ に無限大のインパルスが立っていて,それ以外の箇所では 0 になるような関数だった.

やる夫
そうだったお.

やらない夫
どうして無限大になるかというと,右辺の計算が $ f[n]$ の 1 周期分の総和をさらに無限に足し合わせることになるからだという話をさっきしていたな.

やる夫
覚えてるお.

やらない夫
なので,例によって総和を 1 周期分だけでやめてしまうことで,無限大になるのを回避しよう. $ F(\omega)$ が意味のある値を持つ $ \omega = 2\pi k / N$ の各点についてこれを計算する.つまり $ F(2\pi k / N)$ を計算するわけだが,これを $ k$ の関数 $ F[k]$ と考えよう.この計算が離散フーリエ変換だ.


やる夫
うん,1 周期分だけ計算することで無限大にならないようにするってのは, フーリエ級数のときも, 離散時間フーリエ逆変換のときにも出てきた話だお.今回も定数倍については確認が必要じゃないかお?

やらない夫
そうだな.離散フーリエ変換したものを離散フーリエ逆変換して,元に戻ることを確認しておこう.

  $\displaystyle \quad \frac{1}{N} \sum_{k=0}^{N-1} F(k) e^{j\frac{2\pi}{N} kn}$ (6.6)
  $\displaystyle = \frac{1}{N} \sum_{k=0}^{N-1} \left[ \sum_{m=0}^{N-1} f(m) e^{-j \frac{2\pi}{N} km} \right] e^{j\frac{2\pi}{N} kn}$ (6.7)
  $\displaystyle = \frac{1}{N} \sum_{m=0}^{N-1} f(m) \sum_{k=0}^{N-1} e^{j \frac{2\pi}{N} k(n-m)}$ (6.8)
  $\displaystyle = \frac{1}{N} \sum_{m=0}^{N-1} f(m) N \delta_{m,n}$ (6.9)
  $\displaystyle = f(n)$ (6.10)

やる夫
ああ,これも何度も出てきたような計算だお.クロネッカーのデルタが出るところは,えーと,$ m = n$ のときと $ m \neq n$ のときで場合分けして普通に計算すればいいんだお.

やらない夫
離散フーリエ変換の定義式 (6.5) の頭には定数倍がついていないのに注意してくれ.こうなるように,さっき $ c_k = F[k] \cdot 2\pi / N$ と決めたんだと考えるといい.

やる夫
離散フーリエ変換の式の方をきれいにするために,離散フーリエ逆変換の式にしわ寄せがいったわけだお.フーリエ変換とか離散時間フーリエ変換と同じだお.

やらない夫
というわけで,離散フーリエ変換の対が式 (6.5) と式 (6.4) として無事定義できた.時間領域と周波数領域のどちらも離散的で,どちらも周期 $ N$ で繰り返す.しかも値は無限大に飛ばない.コンピュータでは,どちらもサイズ $ N$ の配列で表せるわけだ.


\includegraphics[scale=0.5]{fig_dft/dft_periodic.eps}

まとめよう.

  • 離散時間 $ n$ (整数) で定義された周期 $ N$ の関数 $ f[n]$ に対して,式 (6.5) で計算される $ F[k]$$ f[n]$ の離散フーリエ変換と呼ぶ (あるいはこの計算をすること自体を離散フーリエ変換と呼ぶ).
  • $ F[k]$ も,整数 $ k$ について定義される周期 $ N$ の関数である.
  • $ F[k]$ から,式 (6.4) によって元の $ f[n]$ が復元できる.この計算を離散フーリエ逆変換と呼ぶ.(あるいは「$ f[n]$$ F[k]$ の離散時間フーリエ逆変換である」という言い方もする)
  • $ k$ は周波数のインデックスを表す整数で, $ F[k]$ は,$ f[n]$ に含まれる正規化角周波数 $ 2\pi k / N$ [rad] の振動成分の量 (振幅・位相)を表す.
  • $ \vert F[k]\vert$ $ \angle F[k]$$ \vert F[k]\vert^2$ をそれぞれ,周期的離散時間信号 $ f[n]$ の振幅スペクトル,位相スペクトル,パワースペクトルと呼ぶ.

やる夫
何ていうか,このまとめも毎回おなじみな感じだお.筆者もコピペしてるんじゃないかお?

やらない夫
他の章と見比べてみるのもいいかもな.周波数を表すインデックス $ k$ が,実際には正規化角周波数 $ 2\pi k / N$ に対応しているというのが重要なところだ.特に注意が必要なのは,$ k$ が大きくなったからとって,周波数が高くなるとは限らないことだ.

やる夫
え,えっ!? どういうことだお.$ k$ が大きくなったら $ 2\pi k / N$ だって大きくなるお.高周波になるんじゃないかお.

やらない夫
そこが勘違いしやすいところだ.離散フーリエ変換 $ F[k]$ は周期 $ N$ の周期関数だったことを忘れてないか? $ k = N$$ k = 0$ に戻るんだ.

やる夫
あ…,そうだったお.確かに $ k = N$ は正規化周波数でいうと $ 2\pi$ [rad] になるお.0 と一緒で直流成分だお.

やらない夫
$ k$ が 0 から $ N$ まで増える間に,正規化角周波数は 0 から $ 2\pi$ まで変化するわけだが,その間で一番周波数が高いのはあくまで真ん中の $ \pi$ のところだ.$ k$ でいうと,$ N$ が偶数なら $ k = N/2$ がこれに対応する.これを過ぎると周波数は $ k$ が増えるとともに低くなっていく.


\includegraphics[scale=0.5]{fig_dft/dft_freq_dist.eps}

やる夫
うー,まぎらわしいお.

やらない夫
$ k = N/2$ 以降は,前に話した「負の周波数」に相当する領域なわけだ.グラフを描いて考えるときは,むしろそこで切って左右を入れ替える方がわかりやすいかもな.

やる夫
うーん,気持ち悪いお.やっぱり $ k$0 から $ N-1$ まで取る慣習が間違ってる気がするお.

やらない夫
まあ,こればっかりは慣れてもらうしかないな.

やる夫
記号での表し方も,やっぱり標準的なものはないのかお.

やらない夫
そうだな.こんな風に書くことにしよう.

$\displaystyle f[n]$ $\displaystyle \stackrel{\text{DFT}}{\rightarrow} F[k]$ (6.11)
$\displaystyle F[k]$ $\displaystyle \stackrel{{\text{DFT}}^{-1}}{\rightarrow} f[n]$ (6.12)
$\displaystyle f[n]$ $\displaystyle \leftrightarrow F[k]$ (6.13)
$\displaystyle {\text{DFT}}[f(t)]$ $\displaystyle = F[k]$ (6.14)
$\displaystyle {\text{DFT}^{-1}}[F[k]]$ $\displaystyle = f(t)$ (6.15)

6.5 高速フーリエ変換

やらない夫
さて,離散フーリエ変換がわかったので,コンピュータで信号の周波数分析ができるようになったわけだ.ただし,実際には,あの公式の通り計算しちゃいけない.

やる夫
なんだお,またちゃぶ台返しかお.

やらない夫
もっと効率のよい計算方法がある.高速フーリエ変換 (Fast Fourier Transform; FFT) と呼ばれている.離散フーリエ変換が必要なときは,常にこの計算方法を用いるべきだ.

やる夫
じゃあそれを教えて欲しいお.

やらない夫
そうしたいのはヤマヤマなんだが,時間がないので,パス.

やる夫
えー,ひどいお.

やらない夫
基本的なことはだいたいの信号処理の教科書には書いてあるはずなので,そちらを当たってほしい.そしてもう一つ,世の中に出回っている高速フーリエ変換のプログラムには,普通の教科書に書いてあることよりもう少し踏み込んだ高速化がなされているものも多い.だから実用上は,自分でプログラムを書こうと思わずに,ちゃんと世の中で実績のあるライブラリなり何なりを使うのが一番だ.

やる夫
人のふんどしかお.

やらない夫
時にはそういう割り切りも必要だ.

やる夫
でも,高速って言うけど,実際のところどんだけ高速なんだお.そんな大した違いあるのかお.

やらない夫
そうだな,その点だけは議論しておこうか.まず,離散フーリエ変換を公式通り計算するとどのくらいの演算が必要になる?

やる夫
えーと,式(6.5) だから…あれ? 指数関数の計算量ってどう考えればよいのかお?

やらない夫
あー,そこは計算済みだとしておこうか. $ e^{-j \frac{2\pi}{N}kn}$ の部分は入力に依存しないから,あらかじめ計算して表として持っておくと考えていい.

やる夫
そうかお.じゃあ,えーと,$ F[k]$ を計算するには,複素数の乗算を $ N$ 回して,それら $ N$ 個の複素数の総和を取るんだから加算が $ N-1$ 回だお.

やらない夫
それはある一つの $ k$ について計算する場合だな. $ k = 0, 1, \cdots, N-1$ の全部について計算するならどうだ?

やる夫
その $ N$ 倍だお.

やらない夫
そういうことになる.大雑把にいって,$ N^2$ に比例する計算量がかかるということだ.このことをよく「計算時間が $ O(N^2)$ である」という.話し言葉では「計算時間が $ N^2$ のオーダである」ということが多いな.

やる夫
何かまた記号が増えたお.

やらない夫
で,高速フーリエ変換を使うと,計算量がなんと $ O(N \log_2 N)$ になる.

やる夫
なんと!! って,いやいや,全然ピンと来ませんお.

やらない夫
まあそうかもな.具体的な数字を入れてみようか.普通,離散フーリエ変換を使うときは $ N =$ 256 とか 512 とか 1024 とか,そういう点数で計算することが多い.$ N^2$ はそれぞれ 65536,262144,1048576 だ.

やる夫
ざっと約6万,26万,100万ってとこだお.

やらない夫
これが $ N \log_2 N$ になると,それぞれ 2048,4608,10240 になる.

やる夫
10 倍とか,下手したら 100 倍速くなるのかお….そりゃ使わない手はないお.

6.6 4種類のフーリエ変換のまとめ ― 離散性と周期性

やる夫
なんだかいろんな種類のフーリエ変換が出てきて混乱してきたお.

やらない夫
そうだな,最初のフーリエ級数も1つと数えると全部で4種類出てきたことになる.ここらでまとめておこうか.

$\displaystyle F_k$ $\displaystyle = \frac{1}{T_0} \int_{-T_0/2}^{T_0/2} f(t) e^{-j\Omega_0 k t}dt$   フーリエ係数の計算 (2.28)
$\displaystyle f(t)$ $\displaystyle = \sum_{k=-\infty}^{\infty} F_k e^{j\Omega_0 k t}$   フーリエ級数 (2.18)
$\displaystyle F(\Omega)$ $\displaystyle = \int_{-\infty}^{\infty} f(t) e^{-j\Omega t}dt$   フーリエ変換 (3.11)
$\displaystyle f(t)$ $\displaystyle = \frac{1}{2\pi}\int_{-\infty}^{\infty} F(\Omega) e^{j\Omega t} d\Omega$   フーリエ逆変換 (3.10)
$\displaystyle F(\omega)$ $\displaystyle = \sum_{n = -\infty}^{\infty} f[n] e^{-j\omega n}$   離散時間フーリエ変換 (5.3)
$\displaystyle f[n]$ $\displaystyle = \frac{1}{2\pi}\int_{-\pi}^{\pi} F(\omega) e^{j\omega n} d\omega$   離散時間フーリエ逆変換 (5.8)
$\displaystyle F[k]$ $\displaystyle = \sum_{n = 0}^{N-1} f[n] e^{-j \frac{2\pi}{N}kn}$   離散フーリエ変換 (6.5)
$\displaystyle f[n]$ $\displaystyle = \frac{1}{N} \sum_{k = 0}^{N-1} F[k] e^{j\frac{2\pi}{N} kn}$   離散フーリエ逆変換 (6.4)

離散性と周期性に注目して表にするとこんな感じになる.

時間領域   周波数領域
離散性 周期性   離散性 周期性
連続 周期的 フーリエ級数展開
\bgroup\color{red}$ \longleftrightarrow$\egroup
離散的 非周期的
連続 非周期的 フーリエ変換
\bgroup\color{red}$ \longleftrightarrow$\egroup
連続 非周期的
離散的 非周期的 離散時間フーリエ変換
\bgroup\color{red}$ \longleftrightarrow$\egroup
連続 周期的
離散的 周期的 離散フーリエ変換
\bgroup\color{red}$ \longleftrightarrow$\egroup
離散的 周期的

やる夫
んー,余計ややこしいお.

やらない夫
時間領域での信号の様子を分類すると,連続なのか離散的なのかの 2 通りのそれぞれについて,周期的なのか非周期的なのかの 2 通りがあって,都合 $ 2 \times 2 = 4$ 通りだ.そのすべての場合に対応しているわけだ.

やる夫
あー,それで 4 種類なのかお.

やらない夫
これまで何度も出てきたことの復習だが,時間領域で周期的な信号は,周波数領域ではどうなるんだった?

やる夫
えーと,離散的になるんだったお.基本周波数の整数倍のスペクトルしか持たないんだったお.フーリエ級数のところで最初に出てきた話だお.

やらない夫
その通り.じゃあ,時間領域で離散的な信号は?

やる夫
周波数領域では周期的になるんだったお.正規化角周波数が $ 2\pi$ 増えても,元の信号と見分けがつかないんだったお.

やらない夫
そうだな.時間と周波数を入れ替えても同じだ.時間または周波数の一方の領域で離散的だと,他方では周期的になる.逆に一方で周期的だと,他方では離散的になる.

やる夫
それでこういう表になるわけだお.

やらない夫
時間から周波数,周波数から時間のそれぞれについてマトリックス状に表すとこうなるかな.


\includegraphics[scale=0.5]{fig_dft/periodic_discrete_matrix.eps}

フーリエ変換は連続・非周期のまま,離散フーリエ変換は離散的・周期的のまま,時間領域と周波数領域を行ったり来たりする変換だ.それに対して,フーリエ級数展開と離散時間フーリエ変換は,「連続・周期的」と「離散的・非周期的」が入れ替わりながら行ったり来たりする変換になる.

やる夫
こうしてみると「フーリエ級数展開」だけ名前が異色だお.

やらない夫
そうだな.「離散周波数フーリエ変換」とでも呼ぶ方がすっきりするかも知れない.でも歴史的経緯があるのでそういう呼び方はしない.

やる夫
そういえば,式の形もフーリエ級数だけちょっと違って見えるお.

やらない夫
といっても,$ 1/T_0$ をどっちにつけるかだけの違いだけどな.何度も話した通り,正変換と逆変換のどちらに定数倍をつけるかは本質的な問題じゃないんだ.フーリエ級数の場合は歴史的にあくまで「級数展開」として扱われてきたので, $ f(t) = \cdots $ の方をきれいな形にして,フーリエ係数を計算する $ F_k = \cdots$ の方にしわ寄せしたわけだ.他の 3 つは時間領域から周波数領域への変換の方をきれいに表示して,逆変換にしわ寄せしたわけだな.

やる夫
あー,そうか,そこだけを例外だと思って見渡すと,4 組ともほとんど同じ式だってわかるお.

やらない夫
そうだな.その他に注意して見比べておきたいところとしては, といったあたりかな.

あと,さっき出てきた「高速フーリエ変換」は,あくまで「離散フーリエ変換」の高速計算方法だってことには注意しておこう.

やる夫
あー,確かに名前だけ聞くと「フーリエ変換」が高速化されたように聞こえて紛らわしいお.

swk(at)ic.is.tohoku.ac.jp
2016.01.08