panda's tech note

デジタル信号処理:フーリエ変換

デジタル無線通信では,直交周波数分割多重 (OFDM: Orthogonal Frequency Division Multiplexing) など周波数領域で信号を処理する技術が多くある。ここでは,時間領域の信号を周波数領域に変換する方法であるフーリエ変換について説明する。

フーリエ級数

フーリエ変換について説明する前にフーリエ級数について簡単に解説する。フーリエ級数は,区間 \([-L/2, L/2]\) で定義される周期 \(L\) の周期関数 \(f\) に対し,

\begin{align} f(x) &= \frac{a_0}{2} + \sum_{n=1}^{\infty} \left( a_n \cos\left(\frac{2\pi}{L}nx\right) + b_n \sin\left(\frac{2\pi}{L}nx\right) \right) \label{eq:fourier-series} \\ a_n &= \frac{2}{L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) \cos\left(\frac{2\pi}{L}nx\right) dx \notag \\ b_n &= \frac{2}{L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) \sin\left(\frac{2\pi}{L}nx\right) dx \notag \end{align}

と表したものである。フーリエ級数はオイラーの公式

$$ e^{ix} = \cos x + i \sin x $$

を用いることで複素数に拡張することができる。オイラーの公式から導出できる

\begin{align*} \cos x = \frac{e^{ix} + e^{-ix}}{2} \\ \sin x = \frac{e^{ix} - e^{-ix}}{2i} \end{align*}

をフーリエ級数の式\ref{eq:fourier-series}に代入すると,

\begin{align*} f(x) &= \frac{1}{L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) dx \\ &+ \sum_{n=1}^{\infty} \left( \frac{e^{\frac{2\pi}{L}inx} + e^{-\frac{2\pi}{L}inx}}{2L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) \left( \frac{e^{\frac{2\pi}{L}inx} + e^{-\frac{2\pi}{L}inx}}{2L} \right) \right) \\ &- \sum_{n=1}^{\infty} \left( \frac{e^{\frac{2\pi}{L}inx} - e^{-\frac{2\pi}{L}inx}}{2L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) \left( \frac{e^{\frac{2\pi}{L}inx} - e^{-\frac{2\pi}{L}inx}}{2L} \right) \right) \end{align*}

となる。ここで,\(g_n(x) = e^{\frac{2\pi}{L}inx}\) とすると,

\begin{align*} f(x) &= \frac{1}{L} \int_{-\frac{L}{2}}^{\frac{L}{2}} + \frac{1}{L} \left( \sum_{n=1}^{\infty} \left( g_n(x) \int_{-\frac{L}{2}}^{\frac{L}{2}} f(t) g_{-n}(t) dt \right) + \sum_{n=-\infty}^{-1} \left( g_n(x) \int_{-\frac{L}{2}}^{\frac{L}{2}} f(t) g_{-n}(t) dt \right) \right) \\ &= \frac{1}{L} \sum_{n=-\infty}^{\infty} \left( g_n(x) \int_{-\frac{L}{2}}^{\frac{L}{2}} f(t)g_{-n}(t) dt \right) \\ &= \frac{1}{L} \sum_{n=-\infty}^{\infty} \left( e^{\frac{2\pi}{L}inx} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) e^{-\frac{2\pi}{L}inx} dx \right) \end{align*}

と導ける。

\begin{align} c_n = \frac{1}{L} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) e^{-\frac{2\pi}{L}inx} dx \label{eq:fourier-coefficient} \end{align}

とおくと,関数 \(f\) は

\begin{align*} f(x) = \sum_{n=-\infty}^{\infty} c_n e^{\frac{2\pi}{L}inx} \end{align*}

と表すことができる。このときの 式\ref{eq:fourier-coefficient} で表した \(c_n\) をフーリエ係数と呼ぶ。

フーリエ変換

フーリエ級数は,周期関数 \(f\) を三角関数の合成として表現している。つまり,周波数領域の信号を合成することで時間領域の信号に変換している。上述のフーリエ級数では周期 \(L\) の周期関数について取り扱ったが,\(L \rightarrow \infty\) とすることで任意の可積分関数 \(f\) について,時間領域の信号と周波数領域の信号の変換式を得ることができる。時間領域の信号から周波数領域の信号への変換をフーリエ変換,周波数領域の信号から時間領域の信号への変換をフーリエ逆変換と呼ぶ。

フーリエ変換およびフーリエ逆変換の式は,以下のようにフーリエ級数を可積分関数 \(f\) の区間 \([-\infty, \infty]\) に適用することで得られる。

\begin{align*} f(x) = \lim_{L \rightarrow \infty} \frac{1}{L} \sum_{n=-\infty}^{\infty} e^{\frac{2\pi}{L}inx} \int_{-\frac{L}{2}}^{\frac{L}{2}} f(x) e^{-\frac{2\pi}{L}inx} dx \end{align*}

しかし,このままの形では極限が取れないため,\(L = \frac{2\pi}{\omega}\) とおくと,

\begin{align*} f(x) = \lim_{\omega \rightarrow 0} \frac{\omega}{2\pi} \sum_{n=-\infty}^{\infty} e^{in\omega x} \int_{-\infty}^{\infty} f(x) e^{-in\omega x} dx \end{align*}

と書ける。

\begin{align} F(t) = \int_{-\infty}^{\infty} f(x) e^{-itx} dx \label{eq:fourier-transform} \end{align}

とおく(これがフーリエ変換である)と,

\begin{align*} f(x) = \lim_{\omega \rightarrow 0} \frac{1}{2\pi} \sum_{n=-\infty}^{\infty} \omega e^{in\omega x} F(n\omega) \end{align*}

と書き直すことができる。

$$ \lim_{\Delta x \rightarrow 0} \sum_{n=-\infty}^{\infty} g(n\Delta x) \Delta x = \int_{-\infty}^{\infty} g(x) dx $$

であるため,

\begin{align} f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(t) e^{itx} dt \label{eq:fourier-inverse-transform} \end{align}

とフーリエ逆変換が導出できる。

まとめると,式\ref{eq:fourier-transform}および式\ref{eq:fourier-inverse-transform}より,可積分関数 \(f\) のフーリエ変換および逆変換は(式\ref{eq:fourier-transform}の係数の違いでいくつかの書き方があるが)

\begin{align*} F(t) = \int_{-\infty}^{\infty} f(x) e^{-itx} dx \\ f(x) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(t) e^{itx} dt \end{align*}

と定義できる。