본문 바로가기
공부, 취준/신호 및 시스템, 통신이론

푸리에 급수와 푸리에 변환(Fourier Transform)에 대해

by 린레몬 2020. 7. 5.

안녕하세요 레몬입니다.

맨 처음으로 통신이론 과목소개 글을 작성하려 했는데, 통신이론이나 신호 및 시스템 과목을 소개하려니 푸리에 변환에 대한 언급이 없을 수가 없어서 차라리 가장 먼저 이 글을 작성하고 시작하려 한다.

맨 처음 접하고 굉장히 난처했던 개념인데, 공부를 하며 깨닫게 된 나름의 이해를 약간이나마 공유해보도록 하겠다.


푸리에 변환은 왜 필요하고 어디에 쓰일까

푸리에 변환의 가장 큰 목적은, 시간 t 축에서 존재하는 신호, 정보를 주파수 f(혹은 w) 축으로 옮겨오겠다는 것이다.

t에 대한 함수를 푸리에 변환하면 f에 대한 함수가 되고, f에 대한 함수를 푸리에 역변환하면 t에 대한 함수가 된다.

위 식이 수업중에 배웠던 푸리에 변환 식일 것이다. 좌측이 푸리에 역변환, 우측이 푸리에 변환 식이다.

간단히 살펴보면 좌측은 w에 대한 적분이니 결과가 t에대한 함수이고, 우측은 그 반대임을 알 수 있다.

배우는 입장에서 수학적으로만 따져보면 멀쩡한 함수에 왜 이런 짓을 하는지 이해가 되질 않는다. 왜 시간 함수를 주파수에 대한 함수로 변환해야 하는 것일까?

 

데이터의 압축

먼저, 시간축에 존재하던 신호를 주파수로 옮겨오면 전송해야할 데이터의 양이 줄어든다.

푸리에 변환에 대해 찾아보다 정말 한번에 이해가 되는 예시가 있어 나도 그렇게 설명해보려 한다.

7일간의 공부 계획을 세운 데이터가 있다고 생각해보자.

국어, 수학, 영어, 과학 네 과목을 공부해야 하고, 위와 같은 계획을 세워두었다.

1일부터 7일까지 날짜에 맞춰 해당 일차에 어떤 과목들을 공부할 지 작성해둔 일반적인 모양이다. 잘 보면 여기에 일정한 규칙이 있는데, 그에 맞게 새로운 데이터를 작성해보도록 하겠다.

모든 과목을 1~4일마다 한번씩 공부하기 때문에, 해당 규칙만 가지고 표현한 데이터이다. 딱 봐도 정보량이 줄어든 것이 보인다.

만약 계획을 세우는 날짜가 7일을 넘어 100일, 1년, 10년으로 늘어난다면? 매일매일 어떤 과목을 공부할지 적어둔 데이터는 끝도없이 늘어나지만, 지금 작성한 공부 주기에 대한 데이터는 늘어날 필요가 없다.

주기는 주파수의 역수이므로, 결국 데이터를 주파수에 대해 작성함으로써 상당한 양의 정보를 압축하여 표시할 수 있게 된 것이다.

 이제 좀더 수학적으로, 주기함수의 대표격인 삼각함수에 대해 살펴보자

익숙한 cos(t) 함수이다. 현재 -20~20의 시간 t 축에 존재하는데, 이러한 신호를 t에 대해 저장하려면 시간의 구간을 촘촘하게 나누어 각 순간마다 어떤 값을 갖는지를 일일이 저장해줘야 할 것이다.

그런데 우리가 알고있듯, cos(t) 는 2π의 주기, 즉 1/2π의 주파수를 가진다.

그렇다면 위 함수는 1/2π 주파수를 가지고 크기가 1인 신호로 간단히 표현될 수 있는 것이다.

대략 이정도가 신호를 시간 축에서 주파수 축으로 옮겨가는 이유라고 할 수 있겠다.


대충 주기함수를 생성해 보았다. 파형을 살펴보면 분명 주기함수는 주기함수인데.. 대체 이걸 어떻게 식으로 표현해야할지 감도 안잡힌다.

이는 내가 간단하게 만든 신호라 눈에 보이는 주기성이라도 있는 것이지, 실제 음성 신호는 훨씬 상황이 좋지 않다.

영상 편집 프로그램에서 찾아볼 수 있는 음성 신호의 파형이다. 이걸 분석해서 주파수에 대해 나타내라니 딱봐도 무리일 수 밖에 없다.

여기서 푸리에 급수가 중요한 역할을 하게 된다.


푸리에 급수

푸리에 급수는, 존재하는 모든 주기신호를 무한개의 간단한 삼각함수의 선형결합으로 표현할 수 있도록 해주는 도구이다.

실제로 내가 위에서 만든 복잡한 주기신호는

위 세 개의 신호의 합이다.

m(t) = cos(t) + sin(3t) + cos(2t) 꼴이다.

검정색 세 신호가 합쳐져 보라색 신호 하나를 만들게 되는 것이다.

완성된 신호는 굉장히 복잡하지만, 이를 단순한 삼각함수들의 합으로 표현하면 그들을 각각 주파수에 대한 정보로 저장하는 것은 간단하다.

m(t) = cos(t) + sin(3t) + cos(2t)에서 m(t)는 주파수가 각각 1/2π, 2/2π이고 크기가 1인 cos 함수와 주파수가 3/2π 이고 크기가 1인 sin 함수의 합임을 표시해주기만 하면 된다.

이렇게 모든 주기함수를 삼각함수들의 합으로 나타낼 수 있다. (Trigonometric Form)

sin 함수는 간단히 cos 함수로 변환할 수 있으니 cos 함수만의 합으로 나타낼 수도 있다. (Compact Form)

삼각함수는 즉 지수함수이니, 지수함수들의 합으로 나타낼 수도 있다. (Exponential Form)


푸리에 변환

여기까지 시간에 대한 함수를 주파수에 대한 함수로 변환하는 이유와, 푸리에 급수를 활용한 그 과정을 정말 간단하게 설명해 보았다.

푸리에 급수는 복잡한 신호를 단순하게 분해하는 강력한 무기이지만, 주기 신호에만 사용할 수 있다는 치명적인 약점이 있다.

이를 극복하기 위해 나온 개념이 푸리에 변환이다.

주기가 없는 비주기 함수를, 그냥 주기가 무한대인 주기함수로 보고 푸리에 급수를 활용해보겠다는 아이디어라고 생각하면 된다.

거기서 나온 식이 맨 처음 글을 시작할 때 나온 아래 식이다.

푸리에 급수에서 푸리에 변환이 유도되는 과정까지 설명하진 않겠다. 우리는 공학도니까 수학적인 원리, 증명보단 이렇게 주어진 식을 어떻게 활용하느냐가 훨씬 중요하다. (변명임)

어쨌건 Time domain과 Frequency domain을 자유롭게 넘나들 수 있도록 해준 푸리에 급수와 푸리에 변환에 대해 설명해 보았다.

전자공학과 3학년의 얕은 지식으로 이해한 바를 나와 같은 이들에게 어느정도 눈높이에 맞게 설명해봤는데, 이를 읽는 사람들한테 얼마나 도움이 될런지는 잘 모르겠다..


마지막으로 조금 와닿는 설명을 위해 오케스트라 음악을 디지털 파일로 만들어 전송하는 상황을 예로 들어보자.

연주 현장에서 녹음하는 오케스트라 음악에는 엄청나게 많은 소리 신호들이 합성된 형태이다.

바이올린, 비올라, 첼로, 피아노, 플룻, 클라리넷... 다 쓰기도 힘든 각종 악기들의 소리가 한데 모여 하나의 음악을 이룬다.

그런데 오케스트라가 연주하는 악기들이 생성하는 음파 중 상당수는 인간의 귀로는 들을 수 없는 영역의 주파수를 갖는다.

이런 상황에서 연주 현장을 그대로 녹음한다면 듣지도 못하는 쓸데없는 신호들이 모두 저장되어 용량이 큰 파일을 얻게 된다. 여기서 푸리에 변환/급수를 이용해 해당 신호를 주파수에 대해 분해하고, 불필요한 주파수 대의 신호를 모두 제거한 뒤 다시 합쳐주기만 하면 간단히 데이터가 압축되는 것이다.

 

쓰다보니 굉장히 장황해지고 빼먹은 부분도 많은 것 같은데.. 글에서 드러나는 짧은 지식에 대한 지적은 댓글로 감사히 받고 수정하도록 하겠다.

그래도 이러한 사전 정보가 전혀 없던 과거의 나와 같은 사람이 이 글을 읽으며 조금이라도 이해에 도움이 되었으면 좋겠다는 마음으로 계속 관련 글을 작성해보도록 하겠다.

댓글