フーリエ変換
事前に読む
/icons/hr.icon
(連続)フーリエ変換
周期$ 2L(L > 0)の周期関数$ f(x)の複素フーリエ級数展開は、
$ f(x) \sim \sum_{n = -\infty}^{\infty} c_n e^{j \frac{n\pi}{L}x}
$ c_n = \frac{1}{2L} \int_{-L}^{L}f(t)e^{-j \frac{n\pi}{L}t}dt
である。
ここで、フーリエ級数に展開できるのは周期性を持つ周期関数のみであったが、非周期関数についても考えたい。
そこで、
$ f(x) \sim \sum_{n = -\infty}^{\infty} (\frac{1}{2L} \int_{-L}^{L} f(t)e^{-j\frac{n\pi}{L}t} dt) e^{j\frac{n\pi}{L}x}
について、$ \omega_n = \frac{n\pi}{L}, \varDelta \omega = \omega_n - \omega_{n - 1} = \frac{\pi}{L}として代入すると、
$ f(x) \sim \sum_{n = -\infty}^{\infty}(\frac{1}{2\pi} \int_{-L}^{L}f(t)e^{-j\omega_n t} dt)e^{j\omega_n x}\varDelta \omega \cdots (1)
となる。ここで、
$ F'(\omega_n) = (\frac{1}{2\pi}\int_{-L}^{L}f(t)e^{-j\omega_n t}dt)e^{j\omega_n x}
としておき、関数$ f(x)を周期が$ \inftyの周期関数であると考える。
周期が$ \inftyとは$ L \rightarrow \inftyであり、$ L \rightarrow \inftyなので$ \omega_n \rightarrow 0となるため、$ (1)式はリーマン積分の定義(区分求積法)より
$ f(x) \sim \lim_{\varDelta \omega \to 0} \sum_{n = -\infty}^{\infty} F'(\omega_n)\varDelta \omega = \int_{-\infty}^{\infty} F'(\omega)d\omega \cdots (2)
となるため総和形式から積分形式に変化し、$ (1)式は
$ f(x) \sim \int_{-\infty}^{\infty} (\frac{1}{2\pi} \int_{-\infty}^{\infty} f(t)e^{-j\omega t}dt) e^{j\omega x}d\omega \cdots (3)
となる。
この関数$ f(x)は周期が$ \inftyの非周期関数であり、$ (1)式をフーリエ積分表示といい、$ (3)式をフーリエの積分公式という。
ここで、$ (3)式について$ -\infty \sim \inftyまでの積分のため、厳密には積分が極限で収束する必要がある。
よって$ (3)式は、関数$ f(x)が$ (-\infty, \infty)で区分的に滑らかで、$ (-\infty, \infty)において絶対可積分である時に成立する。
/icons/hr.icon
Info 絶対可積分
関数$ f(x)の絶対値$ |f(x)|の$ -\inftyから$ \inftyまでの積分が有限となること、つまり
$ \int_{-\infty}^{\infty}|f(x)| dx < \infty
である時、関数$ f(x)は絶対可積分であるという。
/icons/hr.icon
$ (3)式について、
$ F(\omega) = \int_{-\infty}^{\infty}f(t)e^{-j\omega t} dt \cdots (4)
とすると、
$ f(x) \sim \frac{1}{2\pi}\int_{-\infty}^{\infty}F(\omega)e^{j\omega x}d\omega \cdots (5)
となる。
ここで$ (5)式とは、周波数$ \omegaを持つ波$ e^{j\omega x}に係数$ F(x)を与えて足し合わせることで、関数$ f(x)を求めることができるということである。
フーリエ解析とは、ある強さ(フーリエ係数)を持つ波を重ね合わせることで任意の関数を表せられないか、というものである。
よって係数$ F(\omega)はフーリエ係数に対応しており、この係数$ F(\omega)を求める$ (4)式を、フーリエ変換という。
フーリエ変換とは、ある関数$ f(t)を別の関数$ F(\omega)に変換する写像であると捉えられるため、この写像を$ \mathcal{F}として
$ \mathcal{F}[f(t)]= F(\omega)
と表す。
また、フーリエ変換した$ F(\omega)を元の関数$ f(t)に変換することを、フーリエ逆変換という。
このとき、フーリエ逆変換は写像$ \mathcal{F}の逆写像に対応するため、この逆写像を$ \mathcal{F^{-1}}として、
$ \mathcal{F^{-1}}[F(\omega)] \coloneqq \frac{1}{2\pi}\int_{-\infty}^{\infty} F(\omega)e^{j\omega x}d\omega \cdots (6)
と定義する。
このとき$ (6) 式の右辺について、$ F(\omega) = \mathcal{F}[f(t)] であるので$ (5) 式($ \simの意味)より
$ \frac{1}{2\pi}\int_{-\infty}^{\infty}F(\omega)e^{j\omega x} d\omega
$ = \begin{cases} f(x) &(連続な点) \\ \frac{\lim_{a \to x-0}f(a) + \lim_{a \to x+0}f(a)}{2} &(不連続な点) \end{cases} \cdots (7)
であり、$ (7)式をフーリエの反転公式という。
まとめると、周期$ 2Lを持つ周期関数$ f(x)を求めるフーリエ解析は、複素フーリエ級数を用いて
$ f(x) \sim \sum_{n = -\infty}^{\infty} c_n e^{j \frac{n\pi}{L}x}
$ c_n = \frac{1}{2L} \int_{-L}^{L}f(t)e^{-j \frac{n\pi}{L}t}dt
で表され、周期$ L \to \inftyを持つ非周期関数$ f(x)を求めるフーリエ解析は、フーリエ変換を用いて
$ f(x) \sim \frac{1}{2\pi}\int_{-\infty}^{\infty}F(\omega)e^{j\omega x}d\omega
$ F(\omega) = \int_{-\infty}^{\infty}f(t)e^{-j\omega t}dt
で表される。
ここで、波の係数を表す$ c_n, F(\omega)について、
周期関数$ f(x)のとき、不連続な値$ \frac{n\pi}{L}のところでのみ$ f(x)の係数(スペクトル)$ c_nが存在しているため、$ c_nを離散スペクトルという。
非周期関数$ f(x)のとき、連続な値$ \omegaに対して$ f(x)の係数$ F(\omega)が存在しているため、$ F(\omega)を連続スペクトルという。
https://scrapbox.io/files/5fb6a2b23a4f19001e873911.jpg https://scrapbox.io/files/5fb6a2b4634724001f6f0bf4.jpg
/icons/hr.icon
離散フーリエ変換
複素フーリエ級数とフーリエ変換によって、周期関数と非周期関数を表現することができるが、どちらも元の関数が連続である必要がある。
非周期関数$ f(t)のフーリエ変換$ F(\omega) = \int_{-\infty}^{\infty}f(t)e^{-j\omega t} dtにおいて$ f(t)が不連続である場合、積分が計算できない場合がある。
そのため、デジタル信号など離散的にしか値を持たない不連続な関数を表現することができない。
https://scrapbox.io/files/5fb4cb0334fe490043668b0e.jpg
そこで、フーリエ変換において関数$ f が、一定間隔で値を取る非周期で不連続な関数$ f[n] (n \in \mathbb{Z}) である場合を考える。
($ f[n] :不連続な関数、$ f(n):連続な関数、と区別する)
不連続な関数$ f[n] を連続化させるために、積分をしても値を持つ必要がある。
そこで、デルタ関数を考える。
/icons/hr.icon
Info デルタ関数(単位インパルス関数)
ある区間$ [-r, r] の間だけ高さを持つ矩形関数
$ \delta_r(t) = \begin{cases} \frac{1}{2r} &(t \in [-r, r]) \\ 0 &(t \in (-\infty, -r) \cup (r, \infty)) \end{cases}
が与えられた時、$ r \to 0とした時に得られる極限関数(極限を用いて定義される関数)を$ \delta(t)とする。
この時、$ \delta(t)は積分を行なうと常に1となる関数、つまり面積が常に一定である関数と定める。
この$ \delta(t)を(ディラックの)デルタ関数と定義する。
$ \delta(t) \coloneqq \lim_{r \to 0}\delta_r(t) = \begin{cases} \infty &(t = 0) \\ 0 &(t \neq 0) \end{cases} \cdots (\ast)
$ \int_{-\infty}^{\infty}\delta(t)dt = \int_{-\varepsilon}^{\varepsilon}\delta(t)dt = 1 \cdots (\ast\ast)
https://scrapbox.io/files/5fb4c6b420c842001f1ce41f.jpg $ \rightarrow https://scrapbox.io/files/5fb4c6c15850c60025f04460.jpg
なお、デルタ関数$ \delta(t)は$ t = 0のとき$ \inftyを取るが、これは値として$ \inftyを取るのではなく、$ t = 0のときにのみ$ \delta(t)は値を取ることを表現しているにすぎない。
実際、$ (\ast)と$ (\ast\ast)は矛盾した関係である(そのため、$ \astを用いずにデルタ関数を定義する理論も存在する)。
デルタ関数は関数のように扱えるが、通常の関数の概念では許されない特徴を持っており、この様な関数を超関数という。
そして、デルタ関数とある関数との積の形にすることで、ある区間において一定の値を取り続ける元の関数の近似関数を考えることができるようになる。
これにより、離散的な関数についても、近似的に微積分を考えることができる。
ここで、デルタ関数の関数としての基本的な性質として、以下が成り立つ。
$ (I) \quad f(0) = \int_{-\infty}^{\infty}f(t)\delta(t)dt
$ proof)
$ \delta(t) は$ t \neq 0 のとき$ 0 の値を取るので、積分区間$ (-\infty, \infty) の積分において関数$ f(t)が積分の結果に寄与するのは$ t = 0の時のみである。
よって、
$ \begin{aligned} \int_{-\infty}^{\infty}f(t)\delta(t)dt &= \int_{-\infty}^{\infty}f(0)\delta(t)dt \\ &= f(0)\int_{-\infty}^{\infty}\delta(t)dt \\ &= f(0) \end{aligned}
$ (I\hspace{-.1em}I) \quad f(a) = \int_{-\infty}^{\infty}f(t)\delta(t - a)dt
$ proof)
$ (I)式の右辺より、$ x = t - aとすると$ t = x + aとなるので、
$ \begin{aligned} \int_{-\infty}^{\infty}f(t)\delta(t - a)dt &= \int_{-\infty}^{\infty}f(x + a)\delta(x)dx \\ &= f(a)\int_{-\infty}^{\infty}\delta(x)dx \\ &= f(a) \end{aligned}
$ (I\hspace{-.1em}I\hspace{-.1em}I) \quad f(t) = \begin{cases} f[n] & n \in \mathbb{Z}, t = n \\ 0 &n \notin \mathbb{Z} \end{cases} における$ f(t) と$ f[n] の関係は、$ f(t) = \sum_{n = -\infty}^{\infty}f[n]\delta(t - n) \quad (n \in \mathbb{Z}) \cdots (8)
$ proof)
不連続な関数$ f[n] (n \in \mathbb{Z}) についてある区間を考え、この区間において$ f[n] は$ n_1, n_2, \dots, n_Nで$ N個の値を取り得るものとする。
この時、連続な関数$ f(t)を次のように考えることができる。
$ \begin{aligned} f(t) &= f[n_1]\delta(t - n_1) + f[n_2]\delta(t - n_2) + \cdots + f[n_N]\delta(t - n_N) \\ &= \sum_{n \in \{n_1, n_2, \dots, n_N\}}f[n]\delta(t - n) \end{aligned}
右辺について、$ t = n のとき$ \delta(t - n) が値を持つため値$ f[n] を取り、$ t \neq nのとき$ \delta(t)が$ 0を取るため$ 0を取る。
よって、$ f[n] が整数全体で値を取り得るものとすると、
$ f(t) = \sum_{n = -\infty}^{\infty}f[n]\delta(t - n)
となる。
https://scrapbox.io/files/5fc3b4d216ae77001ccf077c.jpg
/icons/hr.icon
$ (8) 式より、$ f[n] とデルタ関数の積を考えてフーリエ変換の式($ (4)式)に代入すると、
$ \begin{aligned} F(\omega) &= \int_{-\infty}^{\infty}(\sum_{n = -\infty}^{\infty} f[n]\delta(t - n))e^{-j\omega t}dt \\ &= \sum_{n = -\infty}^{\infty}f[n]\int_{-\infty}^{\infty}\delta(t - n)e^{-j\omega t}dt \\ \therefore F(\omega) &= \sum_{n = -\infty}^{\infty}f[n]e^{-j\omega n} \cdots (9) \end{aligned}
となり、積分形式から総和形式に変化したことで、不連続な関数についても、近似的にフーリエ変換を計算することができる。
この$ (9)式を離散時間フーリエ変換(Discrete-Time Fourier Transform, DTFT)という。
このとき、$ (9)式より
$ \begin{aligned} F(\omega + 2\pi) &= \sum_{n=-\infty}^{\infty}f[n]e^{-j(\omega + 2\pi) n} \\ &= \sum_{n=-\infty}^{\infty}f[n]e^{-j\omega n}e^{-j2\pi n} \\ &= \sum_{n=-\infty}^{\infty}f[n]e^{-j\omega n}(\cos(2\pi n) - j\sin(2\pi n)) \\ &= \sum_{n=-\infty}^{\infty}f[n]e^{-j\omega n} \\ &= F(\omega) \end{aligned}
となるため、関数$ F(\omega)が周期$ 2\piの周期関数であることが分かる。
つまり、元々は非周期関数であった$ f[n] が、離散時間フーリエ変換によって周期関数に変化したのである。
https://scrapbox.io/files/5fb7132801f152001e7d8503.jpg
この時、離散時間フーリエ変換した$ F(\omega) から元の関数$ f[n] への変換は、$ (10)式にて得られる。
この$ (10)式を離散時間フーリエ逆変換という。
$ f[n] = \frac{1}{2\pi}\int_{-\pi}^{\pi}F(\omega)e^{j\omega n}d\omega \cdots (10)
$ proof)
$ \begin{aligned} \frac{1}{2\pi}\int_{-\pi}^{\pi}F(\omega)e^{j\omega n}d\omega &= \frac{1}{2\pi}\int_{-\pi}^{\pi}(\sum_{m=-\infty}^{\infty}f[m]e^{-j\omega m})e^{j\omega n}d\omega \\ &= \frac{1}{2\pi}\sum_{m=-\infty}^{\infty}f[m]\int_{-\pi}^{\pi}e^{j\omega (n - m)}d\omega \\ &= (\ast) \end{aligned}
ここで、$ n = mのとき$ \int_{-\pi}^{\pi}1d\omega = 2\piであり、$ n \neq mのとき
$ \begin{aligned} \int_{-\pi}^{\pi}e^{j\omega(n - m)}d\omega &= \frac{1}{j(n - m)}\left[e^{j\omega (n - m)}\right]^{\pi}_{-\pi} \\ &= \frac{1}{j(n-m)}(e^{j\pi (n-m)} - e^{-j\pi(n-m)}) \\ &= \frac{1}{j(n-m)}(\cos(\pi(n-m)) + j\sin(\pi(n-m)) - \cos(\pi(n-m)) + j\sin(\pi(n-m))) \\ &= \frac{2\sin(\pi(n-m))}{n-m} \\ &= 0 \quad (\because n, m \in \mathbb{Z} \Rightarrow \sin(\pi(n-m)) = 0 \end{aligned}
よって、$ (\ast)は$ n = mの時のみ考慮すれば良いため
$ (\ast) = \frac{1}{2\pi}f[n]2\pi = f[n]
よって、成り立つ。
ここで、不連続な関数$ f[n] が周期関数である場合を考える。
$ f[n] を離散時間フーリエ変換をおこなうと、$ F(\omega) は$ f[n] 1周期分の総和を無限に足し合わせることになるため、ほとんどの場合は無限大に発散する。
そこで、$ F(\omega) について$ f[n] 1周期分だけ足し合わせることを考える。
まず、関数$ f[n] が周期$ N の周期関数であるとする。
ここで、$ f[n] が1周期内で$ N個の値を取るので、$ F(\omega)はデルタ関数が一定間隔で並んだようなスペクトルになり、$ N個だけ値を取ることになる($ F(\omega)は無限大に発散する)。
https://scrapbox.io/files/5fbbb7bb2563d5001ccb983e.jpg
この時、$ (9) 式の$ F(\omega) は周期$ 2\pi の関数であり、この間に$ F(\omega) は周期$ N に対応する$ N 個の値を取る。
よって、1周期内で$ F(\omega) が値を取る$ \omega は$ \omega = \frac{2\pi}{N}k(k = 0, 1, \cdots, N - 1) となり、$ (9)式を
$ F[k] = \sum_{n = 0}^{N - 1}f[n]e^{-j\frac{2\pi}{N}kn} (k = 0, 1, \cdots, N - 1) \cdots (11)
と考えることができ、この$ (11)式を離散フーリエ変換(Discrete Fourier Transform, DFT)という。
https://scrapbox.io/files/5fba287df70ca2002266aacf.jpg
この時、離散フーリエ変換した$ F[k] から元の関数$ f[n] への変換は、$ (12)式にて得られる。
この$ (12)式を離散フーリエ逆変換という。
$ f[n] = \frac{1}{N}\sum_{k = 0}^{N - 1}F[k]e^{j\frac{2\pi}{N}kn}(n = 0, 1, \cdots, N - 1) \cdots (12)
$ proof)
$ \begin{aligned} \frac{1}{N}\sum_{k=0}^{N-1}F[k]e^{j\frac{2\pi}{N}kn} &= \frac{1}{N}\sum_{k=0}^{N-1}(\sum_{m=0}^{N-1}f[m]e^{-j\frac{2\pi}{N}km})e^{j\frac{2\pi}{N}kn} \\ &=\frac{1}{N}\sum_{m=0}^{N-1}f[m]\sum_{k=0}^{N-1}e^{-j\frac{2\pi}{N}k(n-m)} \\ &= (\ast) \end{aligned}
ここで、$ n \neq mのとき$ \sum_{k=0}^{N-1}e^{-j\frac{2\pi}{N}k(n-m)}は初項$ 1、公比$ e^{-j\frac{2\pi}{N}k(n - m)}、項数$ Nの等比数列であるため
$ \sum_{k=0}^{N-1}e^{-j\frac{2\pi}{N}k(n-m)} = \frac{1 - (e^{-j\frac{2\pi}{N}k(n - m)})^N}{1 - e^{-j\frac{2\pi}{N}k(n - m)}} = \frac{1 - 1}{1 - e^{-j\frac{2\pi}{N}k(n - m)}} = 0 \quad (\because k, n, m \in \mathbb{Z} \Rightarrow e^{j2\pi k(n-m)} = 0)
であり、$ n = mのとき$ e^{-j\frac{2\pi}{N}k0} = 1なので$ \sum_{k=0}^{N-1}1 = Nである。
よって、$ (\ast)は$ n = mの時のみ考慮すれば良いため
$ (\ast) = \frac{1}{N}f[n]N = f[n]
よって、成り立つ。
/icons/hr.icon
まとめ
ここまで、フーリエ級数展開、フーリエ変換、離散時間フーリエ変換、離散フーリエ変換について確認した。
ここで、関数の周期性と連続性に関してまとめると、次のような関係性である(左側が元の関数、右側が変換後の関数)。
table: 関係性
連続性 周期性 連続性 周期性
連続 周期 ←フーリエ級数展開→ 不連続 非周期
連続 非周期 ←フーリエ変換→ 連続 非周期
不連続(一定間隔で値を取る) 非周期 ←離散時間フーリエ変換→ 連続 周期
不連続(一定間隔で値を取る) 周期 ←離散フーリエ変換→ 不連続 周期
元の関数が周期的な関数の場合、変換後では必ず不連続になる。
これは、ある周期的な関数を表現する場合、ある周波数の整数倍の周波数に基づく周期関数を、強さを表すスペクトルと共に足し合わせることで表現できるということである。
元の関数が不連続な関数の場合、変換後では必ず周期的になる。
これは、元の関数が$ N個の値からなる不連続な関数であるため、その$ N個の値が$ 2\pi上に配置され、それらの強さがスペクトルとして提供されるためである。
Reference