logo

離散フーリエ変換 📂フーリエ解析

離散フーリエ変換

ビルドアップ1

ffを特定の間隔で測定されるある物理的信号としよう。現実的な条件を考えた時、信号が測定され始める瞬間t=0t=0と測定が終わる瞬間t=Ωt=\Omegaが存在するだろうから、ffの関数値は[0,Ω][0, \Omega]を除くところで全て00と仮定することができる。

サンプリング定理

f^L2\hat{f} \in L^{2}であり、f(t)=0 for t[0,2Ω]f (t) = 0\ \text{for } t \in [0, 2\Omega]と仮定しよう。それなら、f^(ω)\hat{f}(\omega)mπ/Ω(m=0,±1,±2,)m\pi / \Omega (m=0, \pm 1, \pm 2, \dots)の値で決まる。つまり、次が成り立つ。

f^(ω)=m=f^(mπΩ)sin(Ωωmπ)Ωωmπ \hat{f}(\omega) = \sum \limits_{m = -\infty}^{\infty} \hat{f} \left( \dfrac{m\pi}{\Omega}\right) \dfrac{\sin (\Omega \omega -m\pi )}{\Omega \omega - m\pi}

そうすると、ffの値が長さがΩ\Omegaの区間[0,Ω][0,\Omega]にのみ存在するので、サンプリング定理により、f^\hat{f}の値は離散間隔のf^(πmΩ/2)=f^(2πmΩ)\hat{f} \left( \dfrac{\pi m}{\Omega/2} \right) = \hat{f} \left( \dfrac{2\pi m}{\Omega} \right)によって決定されるとわかる。この値を計算すると、フーリエ変換の定義によって以下のようになる。

f^(2πmΩ)=f(x)ei(2πm/Ω)xdx=0Ωf(x)ei(2πm/Ω)xdx \hat{f} \left( \dfrac{2\pi m}{\Omega} \right) = \int_{-\infty}^{\infty} f(x)e^{-i(2\pi m/ \Omega)x}dx = \int_{0}^{\Omega} f(x)e^{-i(2\pi m/ \Omega)x}dx

ここで、[0,Ω][0, \Omega]NN個の区間に分けると考えよう。そうすると、分けた区間の左端点は以下のようになる。

0,1ΩN,2ΩN,,nΩN,,(N1)ΩN 0, \dfrac{1\Omega}{N}, \dfrac{2\Omega}{N}, \dots, \dfrac{n\Omega}{N}, \dots, \dfrac{(N-1)\Omega}{N}

台形公式を考えると、上の点での関数値と各区間の長さΩN\dfrac{\Omega}{N}を掛けて全て足すと、積分値に似るだろうとわかる。

f^(2πmΩ)=0Ωf(x)ei(2πm/Ω)xdxn=0N1ei2πmn/Nf(nΩN)ΩN \hat{f} \left( \dfrac{2\pi m}{\Omega} \right) = \int_{0}^{\Omega} f(x)e^{-i(2\pi m/ \Omega)x}dx \approx \sum_{n=0}^{N-1}e^{-i2\pi mn /N}f \left( \dfrac{n\Omega}{N} \right)\dfrac{\Omega}{N}

ここで、an=f(nΩ/N)a_{n} = f(n\Omega/N)とすると、上の式は以下のようになる。

NΩf^(2πmΩ)n=0N1ei2πmn/Nan \dfrac{N}{\Omega}\hat{f} \left( \dfrac{2\pi m}{\Omega} \right) \approx \sum_{n=0}^{N-1}e^{-i2\pi mn /N} a_{n}

今、a^m=n=0N1ei2πmn/Nan\hat{a}_{m}=\sum_{n=0}^{N-1}e^{-i2\pi mn /N} a_{n}とすると、上の式は以下のようになる。

NΩf^(2πmΩ)a^m \dfrac{N}{\Omega}\hat{f} \left( \dfrac{2\pi m}{\Omega} \right) \approx \hat{a}_{m}

ここで、e2πin=1e^{-2\pi i n}=1なので、

e2πi(m+N)n/N=e2πimn/Ne2πin=e2πimn/N e^{-2\pi i (m+N)n / N}=e^{-2\pi imn / N}e^{-2\pi in}=e^{-2\pi imn / N}

が成り立ち、a^m\hat{a}_{m}NNの周期を持つ。

a^m+N=a^m \hat{a}_{m+N}=\hat{a}_{m}

これで自然に、NN次元ベクタa=(a0,a1,,aN1)CN\mathbf{a} = (a_{0}, a_{1}, \dots, a_{N-1}) \in \mathbb{C}^{N}からNN次元ベクタa^=(a^0,a^1,,a^N1)CN\hat{\mathbf{a}} = (\hat{a}_{0}, \hat{a}_{1}, \dots, \hat{a}_{N-1}) \in \mathbb{C}^{N}へのマッピングを考えることができる。NNポイント離散フーリエ変換discrete Fourier transform, DFTを次のように定義しよう。

定義

以下のように定義される線形変換 FN:CNCN\mathcal{F}_{N} : \mathbb{C}^{N} \to \mathbb{C}^{N}離散フーリエ変換という。

FN(a)=a^,a^m=n=0N1ei2πmn/Nan(0m<N) \mathcal{F}_{N}(\mathbf{a}) = \hat{\mathbf{a}},\quad \hat{a}_{m}=\sum_{n=0}^{N-1}e^{-i2\pi mn /N} a_{n}\quad (0\le m < N)

この時、a=(a0,a1,,aN1)\mathbf{a} = (a_{0}, a_{1}, \dots, a_{N-1})a^=(a^0,a^1,,a^N1)CN\hat{\mathbf{a}} = (\hat{a}_{0}, \hat{a}_{1}, \dots, \hat{a}_{N-1}) \in \mathbb{C}^{N}である。

説明

離散信号をよく扱う信号処理では、時間ドメインの信号をxx、周波数ドメインの信号をXXで表記することが一般的である。

x[n]=xn=k=0N1X[k] x[n] = x_{n} = \sum \limits_{k=0}^{N-1}X[k]

参照


  1. Gerald B. Folland, Fourier Analysis and Its Applications (1992), p249-251 ↩︎