일렉트릭기타 마이너 갤러리

일붕이도 이해하는 푸리에 변환-기저편

바보털
2019-09-26 23:26:57
조회 293
추천 9

안녕 일붕이들아! 오늘은 컴퓨터가 소리 신호를 처리하는 데 있어 상당히 중요한 개념인 '푸리에 변환'이라는 것에 대해 설명해 보려고 해.

최대한 쉽게 써보려고 노력하겠지만 문과한테는 조금 벅찰지도 몰라. 미리 사과할게.

나도 고딩이라 정확하지 못한 내용이 있을 수 있는데, 수정할 부분들은 공돌이들이 댓글로 달아주면 고맙겠어.



음... 일단 기저의 개념부터 알아야겠어.

잠시 어떤 공간을 생각해보자. 차원을 특정하지 말고, 그냥 텅텅 비어있는 공간. 눈금도 생각하지 마.

그리고 그 공간에 벡터 하나가 있다고 해보자. 화살표로서의 벡터.

이 벡터는 그 자체로도 벡터이기는 하지만 어떤 벡터 몇개를 사용해서 나타낼 수도 있을거야. 정확히 말하면, 다른 벡터에 임의의 실수배를 취한 후 그 합으로 표현 가능할거야(선형 결합). 근데 그 '어떤 벡터 몇개'는 서로가 서로의 선형 결합으로 나타낼 수 없게 하자(선형 독립).

그런데, 그 '어떤 벡터 몇개'를 사용해서 그 공간의 다른 벡터들을 모두 표현할 수 있을까?

우선 그 대답이 '없다'라면 가능해질 때까지 '어떤 벡터 몇개'에 다른 벡터들을 추가하고, '있다'라면 그 대답이 '있다'인 한도 내에서 '어떤 벡터 몇개'의 원소들을 제거하자.

이 과정을 거치고 나면,
1. 서로 선형 독립이고,
2. 이것들의 선형 결합으로 그 공간의 모든 벡터를 표현 가능하고,
3. 그 표현이 유일하며
4. 불필요한 벡터가 없는
'어떤 벡터 몇개'가 남을거야. 이것들을 '기저'라고 해. 또, N개의 기저가 필요한 공간을 N차원 공간이라고 해.

그럼 예를 들어 우리에게 익숙한 3차원 직교 좌표계를 생각해보자.

벡터 v = (x, y, z)는 기저 e1 = (1, 0, 0), e2 = (0, 1, 0), e3 = (0, 0, 1)의 선형 결합 x * e1 + y * e2 + z * e3로 표현할 수 있지.

하지만 기저 e1 = (1, 2, 1), e2 = (-2, 2, 3), e3 = (4, 0, 3)에 대해 (1 / 17) * (3x + 9y − 4z) * e1 + (1 / 34) * (8z − y − 6x) * e2 + (1 / 34) * (6z − 10y + 4x) * e3로 표현할 수도 있겠지. 좀 변태같지만, 기저는 여러개 있을 수 있어.

거의 다 왔어. 자, 그럼 이제 내적에 대해 생각하자. 내적은 두 벡터를 한 스칼라에 대응시키는 연산인데, 이중선형성, 대칭성, 비퇴화성을 만족시켜야 해. 이게 뭔 개소린가 싶겠지만 지금 당장 그렇게 중요한건 아냐. 우리는 학교에서 (x1, y1)과 (x2, y2)의 내적을 x1 * x2 + y1 * y2라고 배웠는데, 이건 그냥 내적의 특수한 형태야. 실제로 (x1, y1)과 (x2, y2)의 내적을 2 * (x1 * x2 + y1 * y2)처럼 정의해도 별 문제는 없지.

그런데 갑자기 내적을 정의해서 뭘 하냐고? 우선 내적을 정의하면 벡터의 크기를 알 수 있어. 정확히 말하자면 크기가 아니라 '노름'이라는 이름이지만. 어떤 벡터의 노름은 자기 자신과의 내적의 제곱근이야.

그리고 내적의 정의로부터 우리는 그 공간의 '정규직교기저'를 얻을 수 있어. 정규직교기저는 노름이 1이고(정규성), 서로의 내적이 0이야(직교성). 예를 들어 (x1, y1)과 (x2, y2)의 내적을 x1 * x2 + y1 * y2로 정의하면 (1, 0)과 (0, 1)이 그 공간의 정규직교기저를 이루고, (x1, y1)과 (x2, y2)의 내적을 2 * (x1 * x2 + y1 * y2)로 정의하면 (1 / sqrt(2), 0)과 (0, 1 / sqrt(2))가 정규직교기저를 이루지.

정규직교기저를 사용해 어떤 벡터를 표현할 때 좋은 점은, 벡터 v와 기저 ek가 주어졌을 때 v가 ek성분을 얼마나 표함하고 있는지 쉽게 알 수 있다는거야. 그냥 둘을 내적하면 돼.

못믿겠다고? v = x * e1 + y * e2 + z * e3라 하고, 이때 v가 e2성분을 얼마나 가지고 있는지(즉, e2 앞의 계수) 알아보자. v * e2 = x * (e1 * e2) + y * (e2 * e2) + z * (e3 * e2) = x * 0 + y * 1 + z * 0 = y. 참 쉽지?

자, 지금까지 우리는 벡터를 가지고 떡을 쳤어. 현실에서는 못치는데 말야. 그런데, 함수를 벡터처럼 다룰 수 있다면 어떨까? 한 함수를 다른 함수들의 선형 결합으로 나타내는거지. '푸리에 급수'편에서 계속하자.


념글 가고싶어요...

An error has occurred. This application may no longer respond until reloaded. Reload 🗙