離散時間かつ離散周波数でのフーリエ変換を離散フーリエ変換という。

準備:時間領域で離散化すると、周波数領域では周期的になる

\(f(t)\)を離散化した信号を\(g(t)\)とおく。離散化には、サンプリング周期\(t_{s}\)の周期的デルタ関数\(\delta_{t_{s}}(t)\)を用いて

\begin{equation*} g(t) = f(t) \delta_{t_s}(t) = \sum_{n=-\infty}^{\infty} f(t) \delta(t - nt_{s}) \end{equation*}

とする。デルタ関数\(\delta(t)\)は関数\(f(t)\)に対して次が成り立つ(超)関数である:

\begin{equation*} \int^{\infty}_{-\infty} f(t) \delta(t) dt = f(0) \end{equation*}

\(t_{s}\)の逆数はサンプリングレート(\(f_{s} = 1/t_{s}\))そのものである。また、周期的デルタ関数の(複素)フーリエ級数は、

\begin{equation*} \begin{aligned} \delta_{t_{s}}(t) &= \sum_{n=-\infty}^{\infty} c_{n} \exp(j\omega_{s}t)dt \\ c_{n} &= \frac{1}{t_{s}} \int^{t_{s}/2}_{-t_{s}/2} \delta_{t_{s}}(t) \exp(-jn\omega_{s}t)dt \end{aligned} \end{equation*}

と表せる。ここで\(\omega_{s}=2\pi/t_{s}\)(サンプリング角周波数)である。\(c_{n}\)の計算を考えると、積分範囲\([-t_{s}/2, t_{s}/2]\)に唯一つのインパルスが存在する事に留意すれば、次の結果を得る:

\begin{equation*} c_{n} = \frac{1}{t_{s}} \int^{t_{s}/2}_{-t_{s}/2} \delta(t) \exp(-jn\omega_{s}t)dt = \frac{1}{t_{s}}\exp(0) = \frac{1}{t_{s}} \end{equation*}

よって、周期的デルタ関数の複素フーリエ級数は、

\begin{equation*} \delta_{t_s}(t) = \frac{1}{t_{s}} \sum_{n=-\infty}^{\infty} \exp(j n \omega_{s} t) = \frac{1}{t_{s}} \sum_{n=-\infty}^{\infty} \exp(j 2\pi n t) \end{equation*}

であり、この結果を用いると、\(g(t)\)のフーリエ変換\({\cal F}[g(t)]\)は、

\begin{equation*} \begin{split} {\cal F}[g(t)] &= \frac{1}{t_{s}} \sum_{n=-\infty}^{\infty} {\cal F} \left[ f(t) \exp(j n \omega_{s} t) \right] \\ &= \frac{1}{t_{s}} \sum_{n=-\infty}^{\infty} \int_{-\infty}^{\infty} f(t) \exp[ -j (\omega - n\omega_{s}) t] dt \\ &= \frac{1}{t_{s}} \sum_{n=-\infty}^{\infty} F(\omega - n\omega_{s}) \end{split} \end{equation*}

ここで、\(F(\omega)\)\(f(t)\)をフーリエ変換した結果を表している。この結果は、離散化した信号のフーリエ変換は周波数領域で周期 \(\omega_{s}\) \(F(\omega)\) を繰り返す事を示している。

離散フーリエ変換・離散フーリエ逆変換

離散化の仮定

時間領域で離散化した信号\(f[n]\)を次の様に定義する:

\begin{equation*} f[n] = f(nt_{s}) \quad n = 0,...,N-1 \end{equation*}

ここで、\(N\)はサンプリング個数である。重要な仮定として、\(f(t)\)\(N\)このサンプリング期間で周期的であるとする。即ち、\(f(t)\)の周期を\(T\)とおくと、

\begin{equation*} T = Nt_{s} \end{equation*}

が成立する。更に、周波数領域についても\(\omega_{s}\)\(N\)分割 し、

\begin{equation*} \omega_{k} = \frac{\omega_{s}}{N} k = \frac{2\pi}{Nt_{s}}k \quad k = 0,...,N-1 \end{equation*}

として、周波数領域で離散化した信号\(F[k]\)を次の様に定義する:

\begin{equation*} F[k] = F(\omega_{k}) \quad k = 0,...,N-1 \end{equation*}

分割の個数\(N\)が時間領域と周波数領域で異なる場合、変換対が対称にならないので高速フーリエ変換の時に不都合が生じる。

離散フーリエ変換の導出

離散化の仮定のもとで、フーリエ変換は次の様に計算できる:

\begin{equation*} F[k] = \int_{-\infty}^{\infty} f(t) \exp(-j\omega_{k}t) dt = \int_{-\infty}^{\infty} f(t) \exp\left(-j\frac{2\pi k}{Nt_{s}} t \right) dt \end{equation*}

\(f(t)\)は周期\(T\)で繰り返すので、積分範囲は1周期分とする(なぜ一周期か:フーリエ係数の仮定から。係数は1周期の積分で良い。三角関数の完全性を見よ):

\begin{equation*} F[k] = \int^{T}_{0} f(t) \exp \left(-j \frac{2\pi k}{Nt_{s}} t \right)dt \end{equation*}

\(t = nt_{s}\)と変数変換すると(\(n\)を積分変数とする)、

\begin{equation*} F[k] = t_{s}\int^{N}_{0} f(nt_{s}) \exp \left(-j \frac{2\pi k}{N} n\right)dn \end{equation*}

この積分は、次の和で近似できる。

\begin{equation*} F[k] \approx t_{s}\sum^{N-1}_{n=0} f(nt_{s}) \exp \left(-j \frac{2\pi k}{N} n\right) = t_{s} \sum^{N-1}_{n=0} f[n] \exp \left(-j \frac{2\pi nk}{N} \right) \end{equation*}

この式が離散フーリエ変換の式となる。逆変換については、複素フーリエ級数

\begin{equation*} \left\{ \begin{array}{l} f(nt_{s}) = \displaystyle \sum_{k=-\infty}^{\infty} c_{n} \exp(j\omega_{k}kn t) \\ c_{n} = \displaystyle \frac{1}{T} \int^{T}_{0} f(t) \exp(-j n\omega_{k} t) dt \end{array} \right. \end{equation*}

から、\(c_{n}\)を消去すると、

\begin{align*} f(nt_{s}) = \sum_{k=-\infty}^{\infty} \left\{ \frac{1}{T} \int^{T}_{0} f(t) \exp\left( -j \frac{2\pi kt}{T} \right) dt \right\} \exp\left( \frac{j2\pi k}{T} nt_{s} \right) \\ f(nt_{s}) = \frac{\omega_{s}}{2 \pi N} \sum_{k=-\infty}^{\infty} F[k] \exp\left(j \frac{2\pi nk}{N} \right) \end{align*}

\(F[k]\)の周期は\(\omega_{s}\)なので、1周期分は\(k = 0,...,N-1\)となる。再び1周期分のみを考えると、

\begin{equation*} f[n] = \frac{\omega_{s}}{2 \pi N} \sum_{k=0}^{N-1} F[k] \exp\left(j \frac{2\pi nk}{N} \right) \end{equation*}

この式が離散フーリエ逆変換の式となる。変換の式をまとめると、

\begin{equation*} \left\{ \begin{array}{l} \displaystyle F[k] = t_{s} \sum^{N-1}_{n=0} f[n] \exp \left(-j \frac{2\pi nk}{N} \right) \\ \displaystyle f[n] = \frac{\omega_{s}}{2 \pi N} \sum_{k=0}^{N-1} F[k] \exp\left(j \frac{2\pi nk}{N} \right) \end{array} \right. \end{equation*}

これがフーリエ変換対となり、一方に他方を代入するとちゃんと逆に戻る事が確認できる:

\begin{equation*} \begin{split} f[n] &= \frac{\omega_{s}}{2\pi N}\sum_{k=0}^{N-1}F[k]\exp\left(j\frac{2\pi nk}{N}\right) \\ &= \frac{2\pi t_{s}}{2\pi t_{s}N}\sum_{k=0}^{N-1}\left\{ \sum^{N-1}_{n^\prime=0} f[n^\prime] \exp \left(-j \frac{2\pi n^\prime k}{N} \right) \right\} \exp\left(j\frac{2\pi nk}{N}\right) \\ &= \frac{1}{N} \sum_{n^{\prime}=0}^{N-1} f[n^\prime] \sum_{k=0}^{N-1} \exp\left[ -j (n-n^\prime) \frac{2\pi k}{N} \right] \end{split} \end{equation*}

\(\sum_{k=0}^{N-1} \exp\left[ -j (n-n^\prime) \frac{2\pi k}{N} \right]\)の値ついては\(k\)の積分

\begin{equation*} \int^{N}_{0} \exp\left[ -j (n-n^\prime) \frac{2\pi k}{N} \right] dk \end{equation*}

と考えれば、\(n=n^\prime\)の時は明らかに\(N\)であり、残りの\(n \neq n^\prime\)の時は

\begin{equation*} \begin{split} \int^{N}_{0} \exp\left[ -j (n-n^\prime) \frac{2\pi k}{N} \right] dk &= - \frac{1}{j(n-n^\prime)\frac{2\pi}{N}} \left[ \exp\left[ -j(n-n^\prime)\frac{2\pi k}{N} \right] \right]_{0}^{N} \\ &= - \frac{1}{j(n-n^\prime)\frac{2\pi}{N}} \left\{ \exp[-j2(n-n^\prime)\pi] - \exp(0)\right\} \\ &= 0 \end{split} \end{equation*}

となるので、最終的に

\begin{equation*} \frac{1}{N} \sum_{n^{\prime}=0}^{N-1} f[n^\prime] \sum_{k=0}^{N-1} \exp\left[ -j (n-n^\prime) \frac{2\pi k}{N} \right] = \frac{1}{N} f[n] N = f[n] \end{equation*}

を得る。 また\(t_{s}=1\)とおくと、\(\omega_{s} = 2\pi\)となって、DFTのよく見る変換式が得られる:

\begin{equation*} \left\{ \begin{array}{l} \displaystyle F[k] = \sum^{N-1}_{n=0} f[n] \exp \left(-j \frac{2\pi nk}{N} \right) \\ \displaystyle f[n] = \frac{1}{N} \sum_{k=0}^{N-1} F[k] \exp\left(j \frac{2\pi nk}{N} \right) \end{array} \right. \end{equation*}

これらの式を実装するのは簡単である。じゃあ、実装しようか…(暗黒微笑)

(デルタ関数から導く方法だと、どうしても正規化定数\(1/N\)が出てこない。正規化定数は本質的では無いとかいうけど、計算上は無視できない。)