본문 바로가기

푸리에 변환, 신호/푸리에 변환의 모든 것

01. 푸리에 변환이란

반응형

통신 이론, 디지털 신호, 음성처리 , 영상처리 등에서 항상 나오는 이론이 푸리에 변환이고, 가장 어려워하는 것이고, 내용을 이해하려고 많은 노력을 기울이면서도 정작 잘 파악이 안 되고, 다 알았다고 생각했는데 사실은 아니고 하는 게 푸리에 변환이다.

 

필자도 푸리에 변환에 대해서 여러 해 동안 이리 보고 저리보고, 프로그램도 짜 보고 응용 거리를 생각도 해보고 하고 있는데, 들여다보면 볼수록 새로운 것이 보이고, 항상 뭔가를 새롭게 떠올리게 하는 것을 보면, 참으로 대단한 이론이라는 생각을 안 할 수 없다.

 


 

푸리에 변환에 대해서는 대학교에서 '통신 이론', '디지털 신호처리' 등의 이름으로 강좌가 개설되어 설명하고 있고, 수많은 책과 블로그, 유튜브에서 내용을 설명하고 있다. 

 

그 와중에 또다시 비슷한 내용으로 푸리에 변환에 대해 설명하는, 정보의 홍수에 물 한 바가지 더 얹는 것은 아닐까 하는 우려가 있긴 한데, 최소한, 지금까지 내가 봤던 수많은 자료들로부터의 깨달음을 공유하는 것은 의미 있겠다는 생각이고, 가능한 차근차근 설명할 것이기에, 누군가 푸리에 변환이라는 산봉우리 등정에 실패하고 포기하려는 공학도가 다시 한번 기운 차리고 도전할 수 있는 기반을 마련해 줄 거라는 자기 합리화를 스스로 세뇌시키면서, 글을 쓰고자 한다.

 


푸리에 변환이란

 

푸리에 변환에 대해 가장 일반적인 정의는 "시간에 대한 함수(혹은 신호)를 주파수에 대한 함수로 변환하는 것"이다. 

 

푸리에 변환에 대해 수 십 시간을 공부하고 수식 유도도 해본 이에게는 "아 그렇구나"하고 고개를 끄덕이게 하겠지만, 푸리에 변환을 처음 접하는 이에게는 그리 와 닿지 않는 표현일 것이다. 시간에 대한 함수를 주파수의 함수로 바꾼다니.... 그게 뭐람? 

 

---

 

잠시 공학적인 것이 아니라 일상생활에서의 예를 생각해 봅시다.

 

아침에 이런 생즙을 먹었다 칩시다. 

 

 

먹고 나서, 이 생즙에 들어가 있는 재료들을 맞출 수 있을까?

 

미감이 뛰어난 이는 대략 어떤 과일이나 채소가 들어가 있는지 맞출 수 있을 것인데, 정확하게 "사과 1개, 레몬 1/2개, 샐러리 1대"로 구성되어 있다고 맞추기는 사람으로서는 힘들 것이다.

 

근데, 이런 분석 장치를 만들면 어떨까?

생즙을 원심 분리한 후 몇 가지 물리적/화학적 반응을 거쳐서 원 재료를 분석해내는 기계

 

 

방송에 보면, 실제로 어떤 음식에 독극물 같은 것이 들어 있는지 분석도 하는 것을 보면, 위와 같은 분석기가 가능할 것이다.

 

 

푸리에 변환이 이런 거와 비슷한 거라 할 수 있다.

 

뭔가 복잡하게 합쳐져 있는 것을, 단순한 무언가로 구분해 내는 것.

 

어떤 복잡한 신호가 있는데, 이 복잡한 신호가 단순한 신호 뭐뭐로 구성되었는지를 알려주는 변환기. 이런 것이다.

 


 

근데, 위 야채주스 얘기는, "단순한 무언가가 합쳐져 있는 것에서, 그 단순한 무언가가 무엇인지를 알아내는 것"이라는 '푸리에 변환'이 해내는 "핵심 기능"을 잘 설명하고 있지만, 실제 푸리에 변환이 이렇게 음식물 재료를 분리해내지는 않는다. 

 

실제 푸리에 변환이 하는 예를 들어보자.

 

...

 

아래 그림은 사람이 "아"라고 발음한 것을 시간에 대한 파형으로 나타낸 것이다.

 

 

 

이것을 여러 주파수 성분으로 분해할 수 있을까? 

 

주파수라는 것은 1초에 몇 번의 진동을 하는가를 나타내는 것으로 "도레미파솔라시도"의 음계에서 높은음으로 갈수록 주파수가 높은 것이고, 저음일수록 주파수가 낮은 것이다.

 

그럼 "아"라는 발음에 여러 주파수가 있는 건가? "솔" 정도의 음계로 "아"를 발음했으면 한 개 주파수로 이루어진 거 아닌가?

 

답은 아니다. 사람이 같은 음계 높이로 발음해도, 그 안에는 굉장히 많은 주파수 성분이 있고, 이 주파수 성분들의 합해져서 "아"라는 소리가 되는 것이다.

 

다시 질문으로 돌아가서, "아~"라고 한 파형 자료를 여러 주파수 성분으로 분해할 수 있을까?

 

있다. 그렇게 하는 것이 푸리에 변환이다. 

 

흠... 할 수 있다니깐 그렇다고 치고, 그렇다면 주파수 성분으로 분해해서 뭘 하겠다는 건가?

 

...

 

여러 가지 일을 할 수 있다. 

 

만약 "아"라는 신호와 "에"라는 신호를 비교해보고자.

파형만을 봤을 때, 다르다는 것만 알지 뭐가 다른지를 잘 모를 것이다. 

 

그런데, 이것을 주파수 성분으로 분해해서 비교해보면, 그 차이를 확실히 알 수 있다.

그리고, 그 주파수 성분 중 일부를 더 크게 하거나 작게 해서 음성 자체를 바꿀 수도 있다.

 

생즙 얘기로 비유를 하면, 다른 두 생즙 A와 B가 있을 때 두 개가 뭐가 다른가를 설명하라면, 그 생즙을 구성하는 재료를 모른다면, "A가 좀 더 달짝지근하네요", "B가 좀 쓰네요" 정도의 구분만을 할 수 있는데, 그 구성성분을 분해해서 알 수 있다면 "A는 사과 100g과 배 100g인 생즙이네요"  "B는 사과 50g, 샐러리 100g으로 이루어졌네요"로 정확하게 표현할 수 있는 것이다.

그리고, A에서 분리해낸 사과 100g, 배 100g 중에서, 사과 100g과 배 50g만을 다시 합쳐서, C라는 새로운 생즙을 만들 수도 있을 것이다. 

 


푸리에 변환에 대해서, 조금 철학적인 비유를 해보자

 

다음은 그리스 철학자 플라톤의 그 유명한 '동굴의 비유" 다.

 

동굴 속에 죄수가 갇혀 있다. 그는 결박당해 있어서 고개를 돌려 뒤를 볼 수 없다. 죄수의 등 뒤 위쪽에는 횃불이 타오르고 있어, 죄수의 그림자가 죄수의 앞 쪽 벽에 비치고 있고, 죄수는 횃불에 비친 그림자만을 볼 수 있다.

죄수와 횃불 사이에는 무대가 있고, 이 무대에서 누군가가 인형극 놀이를 한다고 상상하자. 돌이나 나무로 만든 동물 모형, 사람 모형들이 지나가고, 횃불에 의해 그 그림자가 앞 쪽 벽에 비치고, 죄수는 그 그림자만을 바라본다고 하자. 죄수는 그 그림자만을 평생 보고 있기에, 그 그림자가 실재라고 생각한다. 

https://www.thoughtco.com/the-allegory-of-the-cave-120330

죄수가 실재라고 생각하는 것은 사실 실재가 아닌 그림자이고, 우리들도 이러한 그림자를 실재라고 주장하며 살고 있지 않는가?라는 질문을 던지는 비유이다.

 

우리가 보는 사회적 현상, 진실이라고 주장되는 것들이, 사실은 실재가 아니고 그림자일 수 있을 것이다. 왜곡되어 더 커진 것일 수도 있고, 각도가 뒤틀려서 똑바로 보이지 않는 것일 수도 있다. 

 

근데, 우리가 그림자만 볼 수 있는 존재라면,

그렇다면, 어떤 실재가 존재해서, 그 실재에 대해 여러 각도로 그림자를 만들어서 볼 수 있다면, 그 여러 그림자들을 조합하면 그 '실재'라는 것을 좀 더 실재스럽게 파악할 수 있지 않을까?

 

뜬끔없이 동굴의 비유를 얘기하고, 그림자 얘기를 했는데, 아래 글을 좀 더 읽으면 이 얘기가 푸리에 변환과 관련이 있음을 알 수 있을 겁니다.

 

...

 

이제 좀 뜬금 없을 수도 있지만, 벡터라는 것에 대해 알아보겠다. 사실 다 푸리에 변환과 관계 있는 이야기이다.

 

벡터(Vector)라는 것은 크기뿐만 아니라 '방향' 성분까지 표현할 수 있는 수학적 표현 방법인데, x축과 y축으로 이루어지는 2차원 좌표계에서는 그냥 원점에서 어떤 (x, y) 좌표로의 화살표라고 이해해도 무방하다.

 

 

위와 같은 화살표 $\vec {A}$를 x축과 y축으로 수직이 되게 직선을 그리면, x축과 y축에 $\vec {A}$의 그림자가 생긴다. 

x축에 생기는 그림자를 ${\vec {A_x}}$, y축에 생기는 그림자를 ${\vec {A_y}}$라고 하면, $\vec {A}$는 ${\vec {A_x}} + {\vec {A_y}}$로 표현될 수 있다. 이건 벡터의 수학적 성질이다. 

 

즉, ${\vec {A}} = {\vec {A_x}} + {\vec {A_y}}$

 

만약 z 축이 더 있는 3차원이라면 ${\vec {A}} = {\vec {A_x}} + {\vec A_y} + {\vec A_z}$

 

n개의 차원이라면 n개의 그림자의 합으로 표현될 것이다.

 

...

 

이제 좀 차분히 생각을 해보면, 

 

어떤 실재를 그림자로 나눌 수 있다면, 그 반대로 그림자들을 알면 실재도 파악할 수 있는 것. 물론 충분한 개수의 그림자가 있어야겠지만.

 

즉, 동굴 속의 사람도 충분한 개수의 그림자만 볼 수 있고, 그 그림자를 조합할 사고능력만 있으면 그로부터 실재도 파악할 수 있을 것이다. 

 

...

 

벡터의 경우를 그림자 사례로 보면, 어떤 벡터가 있을 때, 이 것을 여러 축의 그림자의 합으로 변환하는 것이 푸리에 변환이다. 

 

시간을 기준으로 한 어떤 신호를, 여러 개의 주파수 축을 기준으로 해서, 그 주파수 축에서의 신호 그림자들의 합으로 바꿔주는 변환이 푸리에 변환이다.

 


위와 같은 표현이 아직은 와 닿지 않을 것 같다.

 

차근차근 푸리에 변환이 어떻게 이루어지고, 그 수학적인 표현은 어떻게 되는지를 공부하다 보면, 깨닫게 될 것이다.

 


푸리에 변환을 제대로 알려면, 변환의 의미뿐 아니라 수학적인 이해도 이루어져야 한다. 

수학적인 이해를 위해서는 고등학교 때 배웠던 거의 모든 단원의 이론을 사용해야 한다.

 

삼각함수, 지수와 로그, 미분 적분, 복소수 등등

 

(아직도 고등학교의 선생님들이, 고등학교를 졸업하면 다시는 이런 삼각함수니 하는 이론을 볼 일이 없을 거라 하고 있다는데, 천만의 말씀이다. ㅎㅎ)

 

...

 

너무 겁을 먹지 않아도 된다. 다음 페이지부터 차례차례, 모든 내용을 상세히 설명할 것이다. 

 

 

-끝-

 

 다음글: 02-1. 푸리에 급수 : 주기신호, 삼각 함수(사인, 코사인 그래프)

 

 

반응형