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}이다.

설명

이산 신호를 많이 다루는 신호처리signal processing 등에서는 흔히 시간 도메인 신호를 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 ↩︎