[신호처리] 푸리에 변환의 직관적 이해

Ethan·2024년 8월 30일
0

딥러닝 이론

목록 보기
7/7

본 블로그의 모든 글은 직접 공부하고 남기는 기록입니다.
잘못된 내용이나 오류가 있다면 댓글을 남겨주세요.


푸리에 변환

기본 개념

푸리에 변환은 입력받은 신호를 여러 주파수 성분들의 합으로 변환해주는 방법입니다.

푸리에 변환을 이용하면 위 그림처럼 시간/공간에 대한 함수를 여러 개의 주파수에 대한 함수들로 분해할 수 있습니다.

또, 이렇게 구한 함수들을 개별적으로 다시 시간/공간에 대한 함수로 돌려놓을 수도 있습니다. 그러면 위 그림처럼 여러 신호 데이터로 분해되겠죠. 이걸 푸리에 역변환이라고 부릅니다.

데이터를 굳이 주파수 도메인으로 변환하는 이유는 원본 데이터를 시간 도메인에서 바로 처리하기 어렵기 때문입니다. 예를 들어 A, B, C 3명이 대화한 내용을 기록한 녹음파일에서 A의 목소리만 분리하고 싶은 경우를 생각해볼 수 있습니다.

이처럼 원본 데이터를 직접적으로 처리하기 어려울 때 푸리에 변환을 이용해 하위 주파수 성분들로 분해하면 훨씬 다루기 쉬워집니다.

직관적으로 이해하기

푸리에 변환을 수식으로 나타내면 다음과 같습니다.

함수 h:RCh:\mathbb{R}\rightarrow\mathbb{C}에 대해 h^=F[h]:RC\hat{h}=F[h]:\mathbb{R}\rightarrow\mathbb{C}라는 함수가 있을 때,

h^(t)=F[h](t)=e2πitxh(x)dx(i=1)(1)\hat{h}(t)=F[h](t)=\int^\infty_{-\infty}e^{-2\pi itx}h(x)dx\quad(i=\sqrt{-1})\qquad(1)

여기서 hh는 입력 신호이고 h^=F[h]\hat{h}=F[h]는 푸리에 변환입니다. 위 식은 hh를 임의의 e2πitxe^{-2\pi itx}들의 합으로 나타낼 수 있다는 뜻입니다. 그렇다면 e2πitxe^{-2\pi itx}는 도대체 무슨 의미일까요?

오일러 공식 Euler's formula

e2πitxe^{-2\pi itx}에서 ii는 허수이고 x,tx,t는 실수입니다. 따라서 실수부와 허수부를 나눠서 보기 위해 오일러 공식을 이용합니다. 오일러 공식은 다음과 같이 삼각함수를 이용해서 복소수 지수를 표현합니다.

eiφ=cosφ+isinφ(2)e^{i\varphi}=\cos \varphi+i\sin \varphi\qquad(2)

복소평면 상에 단위원을 그려보면 오일러 공식의 의미를 조금 더 이해할 수 있는데요.

즉, eiφe^{i\varphi}는 단위원 위에서 φ rad\varphi\ \text{rad}만큼 이동한 점을 나타내는 벡터입니다.

이제 이 특성을 이용해서 시간 tt에 따라 단위원 위를 회전하는 점 pp가 있다고 가정해 보겠습니다. 그러면 점 pp의 위치를 다음과 같이 표현할 수 있습니다.

p=e2πitx=cos2πtxisin2πtxp=e^{-2\pi itx}=\cos 2\pi tx-i\sin 2\pi tx

여기서 2π (rad)2\pi\ (\text{rad})는 단위원의 둘레의 길이입니다. 따라서 pp가 원 위를 nn바퀴 돌려면 txtx의 값이 정수여야 합니다. 그런데 tt는 '점 pp가 이동한 시간'이고 거리=속력x시간이니까 xx는 '점 pp가 단위원 위를 이동하는 속도'가 됩니다. (물론 속도!=속력이지만 직관적인 이해를 위해...)

그리고 원 위를 회전하는 점 pp의 움직임은 위 그림처럼 주기함수로 표현할 수 있습니다. 따라서 xx는 그래프의 진동수 = 주파수가 됩니다. 결과적으로 푸리에 변환을 통해 원본 신호를 xx값에 따라 다양한 주파수를 갖는 주기함수들로 분해할 수 있습니다.

이산 푸리에 변환 (DFT)

원래 푸리에 변환은 식 (1)과 같이 연속인 xx에 대한 함수입니다. 하지만 현실에서 우리가 다루는 데이터는 이산적이므로 적분 대신 합을 이용해서 각 데이터 포인트에 대해 변환을 해볼 수 있습니다.

오리지널 푸리에 변환을 다시 살펴봅시다.

h^(t)=F[h](t)=e2πitxh(x)dx(i=1)\hat{h}(t)=F[h](t)=\int^\infty_{-\infty}e^{-2\pi itx}h(x)dx\quad(i=\sqrt{-1})

위 식에서 단위를 시간 tt 대신 주파수 단에서의 kk번째 샘플로 바꾸고, 전체 데이터의 개수를 NN이라 하면 이산 푸리에 변환 (Discrete Fourier Transform)은 아래와 같습니다.

h^(k)=F[h](k)=n=0N1x[n]\hat{h}(k)=F[h](k)=\sum_{n=0}^{N-1}x[n]


Reference

  1. Isaac's science blog - Fourier transform
  2. 데이터 사이언스 스쿨 - 푸리에 변환과 스펙트럼
  3. 3Blue1Brown - 푸리에 변환이 뭐냐면... 그려서 보여드리겠습니다.
  4. 다크 프로그래머 - Fourier Transform(푸리에 변환)의 이해와 활용
  5. 위키백과 - 오일러 공식
profile
재미있게 살고 싶은 대학원생

0개의 댓글