手帳と試行

学んだことをアウトプットしていきます。 日々、ノートあるのみ。

フーリエ変換と離散フーリエ変換

ディジタル信号処理で必須な離散フーリエ変換を離散時間フーリエ変換、フーリエ変換などとまとめて導入する。

フーリエ変換 (FT)

時間領域における関数 f(t)f(t) を周波数領域における関数 F(s)F(s) に変換する公式がある。この変換をフーリエ変換という。

F(s)=12πdt eistf(t)\begin{aligned} F(s) = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} dt ~ e^{-ist} f(t) \end{aligned}

フーリエ反転公式により、変換された後の関数 F(s)F(s) に対し、逆向きに f(t)f(t) を復元するような変換は次式で与えられる。これをフーリエ逆変換という。

f(t)=12πds eistF(s)\begin{aligned} f(t) = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} ds ~ e^{ist} F(s) \end{aligned}

まとめると次のとおりで、両者の違いは指数関数の回転の向きが逆であることが確認できる。

Fourier transform

関数 f:RRf: \R \to \R が、区分的に滑らかで、かつ絶対可積分な場合

F(s)=12πdt eistf(t)f(t)=12πds eistF(s)\begin{aligned} F(s) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} dt ~ e^{-ist} f(t) \\ f(t) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} ds ~ e^{ist} F(s) \end{aligned}

正確には、ffが連続でないような点についても述べるため、

12(f(t+0)+f(t0))=12πds eistF(s) \begin{aligned} \frac{1}{2}( f(t+0) + f(t-0) ) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} ds ~ e^{ist} F(s) \end{aligned}

と書くべきである。ただし f(t±0)=limτ+0f(t±τ)\displaystyle f(t \pm 0) = \lim_{\tau \to + 0} f(t \pm \tau) である。もしも点 tt において ff が連続である、すなわち f(t±0)=f(t)f(t \pm 0) = f(t) が成り立つならば

f(t)=12πds eistF(s) \begin{aligned} f(t) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} ds ~ e^{ist} F(s) \end{aligned}

が成り立つというわけだ。

フーリエ変換の条件

フーリエ変換が行なえる関数 f:RRf: \R \to \R は、区分的に滑らかかつ絶対可積分なものに限られる。

区分的に滑らか

関数 f:RRf : \R \to \R が区間 [a,b][a, b] において区分的に滑らかであるとは、次の条件を満たすことをいう。

  • 区間 [a,b][a, b] において不連続な点が存在しない、または存在しても高々有限個
  • 1階導関数 ff' が存在
  • ff' が区間 [a,b][a, b] において連続
絶対可積分

関数 f:RRf : \R \to \R が絶対積分可能である、または絶対可積分であるとは、絶対値の広義積分が発散しないことをいう。

0dx f(x)<\begin{aligned} 0 \le \int_{-\infty}^{\infty} dx ~ |f(x)| \lt \infty \end{aligned}

フーリエ級数展開 (Fourier series)

時間領域における関数 f(t)f(t) が周期 2π2\pi の連続関数である場合を考える。この場合、関数 ff2π2\pi ごとに同じ値をとるため、00 から 2π2\pi までの区間を積分すれば十分である。

F(s)=12π02πdt eistf(t)\begin{aligned} F(s) = \frac{1}{\sqrt{2\pi}} \int_{0}^{2\pi} dt ~ e^{-ist} f(t) \end{aligned}

変換後の関数 F(s)F(s) は離散値をとる関数となり、逆変換は総和によって与えられる。

f(t)=12πs=eistF(s)\begin{aligned} f(t) = \frac{1}{\sqrt{2\pi}} \sum_{s=-\infty}^\infty e^{ist} F(s) \end{aligned}

この逆変換のことをフーリエ級数展開という。

ディジタル信号処理の立場から見た場合には、順変換の方を「離散周波数フーリエ変換」と呼ぶほうが良さそうにも感じられるが、一般的にはそう呼ばない。歴史的には「時間領域における周期的な連続関数を三角関数の和によって表す公式」として生まれた経緯があるためである。

関数 ff の周期が λ\lambda の場合には次式で与えられる。

Fourier series

周期 λ\lambda の関数 f:RRf : \R \to \R が、区間 [0,λ][0, \lambda] における不連続点が高々有限個で、かつ絶対可積分である場合

F(s)=1λ0λdt ei2πλstf(t)f(t)=1λs=ei2πλstF(s)\begin{aligned} F(s) ={}& \frac{1}{\sqrt{\lambda}} \int_{0}^{\lambda} dt ~ e^{-i\frac{2\pi}{\lambda}st} f(t) \\ f(t) ={}& \frac{1}{\sqrt{\lambda}} \sum_{s=-\infty}^\infty e^{i\frac{2\pi}{\lambda}st} F(s) \end{aligned}

離散時間フーリエ変換 (DTFT)

フーリエ級数展開の場合、時間領域が周期的で、周波数領域が離散的である。逆に、時間領域が離散的な場合には、周波数領域が周期的になる。

F(s)=12πt=eistf(t)F(s) = \frac{1}{\sqrt{2\pi}} \sum_{t=-\infty}^\infty e^{-ist} f(t)

この変換を離散時間フーリエ変換という。周波数領域の周期が 2π2\pi の場合、逆変換は次のとおりである。

f(t)=12π02πds eistF(s)\begin{aligned} f(t) = \frac{1}{\sqrt{2\pi}} \int_{0}^{2\pi} ds ~ e^{ist} F(s) \end{aligned}

フーリエ級数展開と同様に、関数 FF の周期が λ\lambda の場合については次のとおりである。

Discrete-time Fourier transform

周期 λ\lambda の関数 F:RRF : \R \to \R が、区間 [0,λ][0, \lambda] における不連続点が高々有限個で、かつ絶対可積分である場合

F(s)=1λt=ei2πλstf(t)f(t)=1λ0λds ei2πλstF(s)\begin{aligned} F(s) ={}& \frac{1}{\sqrt{\lambda}} \sum_{t=-\infty}^\infty e^{-i\frac{2\pi}{\lambda}st} f(t) \\ f(t) ={}& \frac{1}{\sqrt{\lambda}} \int_{0}^{\lambda} ds ~ e^{i\frac{2\pi}{\lambda}st} F(s) \end{aligned}

離散フーリエ変換 (DFT)

時間領域、周波数領域ともに離散的な場合、両者とも周期関数となる。このような場合の変換は離散フーリエ変換と呼ばれる。

Discrete Fourier transform

周期 λ\lambda の関数 f:ZRf : \Z \to \R について

F(s)=1λt=0λ1ei2πλstf(t)f(t)=1λs=0λ1ei2πλstF(s)\begin{aligned} F(s) ={}& \frac{1}{\sqrt{\lambda}} \sum_{t=0}^{\lambda-1} e^{-i\frac{2\pi}{\lambda}st} f(t) \\ f(t) ={}& \frac{1}{\sqrt{\lambda}} \sum_{s=0}^{\lambda-1} e^{i\frac{2\pi}{\lambda}st} F(s) \\ \end{aligned}

回転因子

以上4通りのフーリエ変換について書いた。よく見ると、4つの変換公式すべてについて、次の指数関数が含まれていることがわかる。

exp(i2πλst)=ei2πλst\begin{aligned} \exp\left( -i \frac{2\pi}{\lambda} st \right) = e^{-i \frac{2\pi}{\lambda} st} \end{aligned}

そこでこの部分を簡単に書き直すために、次の回転因子と呼ばれるものを導入する。

Twiddle factor
ωN=exp(i2πN)\begin{aligned} \omega_N = \exp\left( -i\frac{2 \pi}{N} \right) \end{aligned}

すなわち

ωNn=exp(i2πNn)\begin{aligned} \omega_N^n = \exp\left( -i \frac{2 \pi}{N} n \right) \end{aligned}

ここで n=kNn = kN の場合、

ωNkN=exp(i2πNkN)=1\omega_N^{kN} = \exp\left( -i \frac{2\pi}{N} kN \right) = 1

ゆえ、

ωNkN1=0(ωNk1)(ωNk(N1)+ωNk(N2)++1)=0(ωNk1)p=0N1ωNp=0\begin{aligned} \omega_N^{kN} - 1 ={}& 0 \\ (\omega_N^k - 1) (\omega_N^{k(N-1)} + \omega_N^{k(N-2)} + \dots + 1) ={}& 0 \\ (\omega_N^k - 1) \sum_{p=0}^{N-1} \omega_N^p ={}& 0 \end{aligned}

が成り立つ。よって、

p=0N1ωNp={NkmodN=00otherwise\begin{aligned} \sum_{p=0}^{N-1} \omega_N^p ={}& \begin{cases} N & k \mathop{\rm mod} N = 0\\ 0 & \text{otherwise} \end{cases} \end{aligned}

がいえる。ただし kmodNk \mathop{\rm mod} N は、整数 kk を整数 NN で割った余りである。

下付き文字 NN は通常は整数を仮定するが、ここでは実数全体に拡張してしまう。

ωλ=exp(i2πλ)\begin{aligned} \omega_\lambda = \exp\left( -i\frac{2 \pi}{\lambda} \right) \end{aligned}

ここで λ=2π\lambda = 2\pi とすると

ω2π=exp(i)\begin{aligned} \omega_{2\pi} = \exp(-i) \end{aligned}

となる。

回転因子を用いた書き換え

回転因子を用いると、4つのフーリエ変換は次のように書き換えることができる。

Fourier transforms
1. FTF(s)=12πdt ω2πstf(t)f(t)=12πds ω2πstF(s)2. Fourier seriesF(s)=1λ0λdt ωλstf(t)f(t)=1λs=ωλstF(s)3. DTFTF(s)=1λt=ωλstf(t)f(t)=1λ0λds ωλstF(s)4. DFTF(s)=1λt=0λ1ωλstf(t)f(t)=1λs=0λ1ωλstF(s)whereωλ=exp(i2πλ)\begin{aligned} & \text{1. FT} & F(s) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} dt ~ \omega_{2\pi}^{st} f(t) \\ && f(t) ={}& \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{\infty} ds ~ \omega_{2\pi}^{-st} F(s) \\ \\ & \text{2. Fourier series} & F(s) ={}& \frac{1}{\sqrt{\lambda}} \int_{0}^{\lambda} dt ~ \omega_\lambda^{st} f(t) \\ && f(t) ={}& \frac{1}{\sqrt{\lambda}} \sum_{s=-\infty}^\infty \omega_\lambda^{-st} F(s) \\ \\ & \text{3. DTFT} & F(s) ={}& \frac{1}{\sqrt{\lambda}} \sum_{t=-\infty}^\infty \omega_\lambda^{st} f(t) \\ && f(t) ={}& \frac{1}{\sqrt{\lambda}} \int_{0}^{\lambda} ds ~ \omega_\lambda^{-st} F(s) \\ \\ & \text{4. DFT} & F(s) ={}& \frac{1}{\sqrt{\lambda}} \sum_{t=0}^{\lambda-1} \omega_\lambda^{st} f(t) \\ && f(t) ={}& \frac{1}{\sqrt{\lambda}} \sum_{s=0}^{\lambda-1} \omega_\lambda^{-st} F(s) \\ \\ & \text{where} & \omega_\lambda ={}& \exp\left( -i\frac{2 \pi}{\lambda} \right) \end{aligned}

ただし λ\lambda は周期で、DFTにおいて λZ+\lambda \in \Z_+、それ以外で λR+\lambda \in \R_+

以上4つを、関数の周期性や離散・連続の観点でまとめておく。

時間領域 周波数領域
フーリエ変換 連続
非周期的
連続
非周期的
フーリエ級数展開 連続
周期的
離散
非周期的
離散時間フーリエ変換 離散
非周期的
連続
周期的
離散フーリエ変換 離散
周期的
離散
周期的

注目すべきは、離散的な関数を変換すると周期関数になるという点である。これは加算無限個の指数関数 (あるいは三角関数) の和の形で書ける関数は周期関数に限られることを示唆している。