푸리에 변환에 대해 정리해보려 한다. 주파수 분해를 위해 사용되는 여러 가지 공학분야에서 없어서는 안되는 수식 중 하나이다. 일반적으로 우리가 푸리에 변환(Fourier Transform)이라 부르는 것은 Continuous Fourier Transform(CFT)이며 이는 Continuous-Time Fourier Transform(CTFT)로 불리기도 한다. 푸리에 변환 이론 자체가 처음에는 연속 신호를 다루는 데서 출발했기 때문이다.
푸리에 변환을 진행하기 전 사전지식이 어느 정도 필요하다. 바로 복소수와 복소 공간 그리고 오일러 공식에 대한 이해이다.
복소평면(Complex Plane)
먼저 복소 공간이란 복소수로 구성된 수학적 공간을 의미한다. 복소수는 실수부와 허수부를 가지는 수로, 다음과 같이 표현한다.
$$ z = x + iy $$
- \( x \): 실수부(Real Part)
- \( y \): 허수부(Imaginay Part)
- \( i \): 허수 단위로 \( i^2 = -1 \)을 만족
복소수 \( z \)는 2차원 평면에서 하나의 점으로 생각할 수 있다. 이 평면을 복소 평면(Complex Plane)이라고 한다.
$$ |z| = \sqrt{x^2 + y^2} $$
이를 극형식(polar form)으로 나타내면 다음과 같다.
$$ z = r (\cos \theta + i \sin \theta) $$
두 복소수는 다음과 같다.
- \( z_1 = r_1 e^{i\theta_1} \)
- \( z_2 = r_2 e^{i\theta_2} \)
여기서 이 두 복소수에 대해 곱은 다음과 같이 계산한다.
$$ z_1 z_2 = (r_1 r_2) e^{i(\theta_1 + \theta_2)} $$
따라서 크기는 \( r_1 × r_2 \)와 같이 곱하고 위상은 \( \theta_1 + \theta_2 \)와 같이 더한다. 길이는 곱하고 위상은 더한다.
오일러 공식(Euler's Formula)
오일러 공식은 복소수와 삼각함수 사이의 깊은 연결을 보여주는 식이다. 다음과 같이 표현된다.
$$ e^{i\theta} = \cos(\theta) + i\sin(\theta) $$
이 공식은 푸리에 급수 및 푸리에 변환과 밀접한 관련이 있다. 특히 \( e^{j\theta} \)로 형태로 복소 평면에서 표현할 수 있으며, 이는 원점을 중심으로 반지름이 1인 단위원 상을 회전하는 것을 의미한다. 여기서 \( j \)는 공학에서 일반적으로 사용하는 허수 단위이다. 즉, 복소 지수 함수 \( e^{j\theta} \)는 시간 또는 공간에 따라 회전하는 벡터를 나타낸다.
뒤에서 설명하겠지만, 푸리에 변환은 신호를 다양한 주파수 성분으로 분해하고, 각 주파수 성분을 이러한 복소 지수 함수(단위원 회전)로 표현하는 것이다. 결국 신호는 여러 회전하는 벡터의 조합으로 해석할 수 있다. 이를 그림과 함께 살펴보면 훨씬 직관적으로 이해할 수 있을 것이다.
푸리에 변환(Fourier Transform)
푸리에 변환(Fourier Transform)은 시간(domain)에서 주어진 신호를 주파수(domain)로 변환하는 수학적 도구이다.
쉽게 말하면, 복잡한 신호를 주파수 성분(사인파, 코사인파)으로 분해하는 방법이다. 푸리에 변환을 통해 우리는 신호가 어떤 주파수 성분으로 이루어져 있는지 분석할 수 있다.
쉽게 말해 여러 가지 색깔들의 물감을 한데 뒤섞어놓고 이를 다시 분해하는 것으로 상상할 수 있다.
위 그림에서 상단 그래프는 3Hz의 신호이다. 그림에 나와있듯 이 상단 그래프를 좌측 하단의 복소 평면에 나타나고 있는 원에 감는 것이다. 위 그림에선 초당 약 0.25바퀴를 감고 있는 것으로 볼 수 있다. 이 '감는 진동수'를 조절하면 '감긴 그래프'가 어떻게 생길지 결정된다. 매 시점 원에서 나타나는 벡터의 크기는 해당 시점의 3Hz 신호의 크기와 동일하다.
이제 저 '감는 진동수'가 하나의 긴 철사라고 생각해 보자. 그렇다면 저 철사들은 무게 중심이 생길 것이다.
보통은 무게 중심은 원점을 크게 벗어나지 않을 것이다.
하지만 초당 3바퀴를 이 원에 감게 되어 진동수(3Hz)와 일치하게 되면 무게 중심은 한쪽으로 치우치게 되며 오른쪽 하단 'x 좌표의 무게 중심' 그래프에서 확인할 수 있듯 3에서 무게 중심이 원점을 크게 벗어나게 된다. 이를 Spike라고 한다. 0에서 Spike가 존재하는 이유는 해당 설명에서 주기 파형이 0 이상인 양수 범위이기 때문이다.
잠깐 부가적으로 설명하자면 만약 해당 주기 함수가 -1~1 사이로 진동하게 된다면 0에서의 Spike는 사라질 것이다. 참고로 이 'x 좌표의 무게 중심' 그래프는 실수부만 표현하고 있는 것이다.
다시 돌아와 위 그림은 2Hz와 3Hz 두 개의 주파수를 합성한 뒤 다시 감긴 그래프를 그린 결과이다. 이 역시 특정 주파수와 감는 진동수가 일치할 때 무게 중심이 치우치게 되어 Spike가 생기는 것을 확인할 수 있다.
여기까지 설명한 것이 푸리에 변환에 대한 기본적인 아이디어이다. 내가 참고한 영상에선 이를 '거의 푸리에 변환'이라 칭한다. 아직 푸리에 변환에 사용되는 좀 더 복잡한 내용들에 대한 설명은 포함되어있지 않기 때문이다.
이제 위에서 언급하였던 복소 평면과 오일러 공식이 사용된다. 오일러 공식은 '원점을 중심으로 반지름이 1인 단위원'이라고 하였다. 위 설명들에 사용되었던 무게 중심을 잡기 위해 사용된 원을 오일러 공식을 사용하여 표현하면 다음과 같다.
$$ e^{-2\pi i ft} $$
직교 좌표계에서 x축에 대한 각을 측정할 때 반시계 방향에 +를 이용하고 시계 방향으로 회전할 땐 -를 사용한다. 이 감는 방향을 시계 방향으로 설정하였기에 오일러 공식에서의 지수에 -를 사용하였다.
여기서 \( g(t) \)는 주파수 신호가 되고 이를 위에서 말한 오일러 방정식에 곱하게 되면 원을 감으며 \( g(t) \)의 크기에 대응하는 시점에 같은 크기를 가지는 그래프가 그려질 것이다. 이를 이용해 감긴 그래프의 무게 중심 위치를 추적만 할 수 있다면 어떤 주파수가 섞여있는지 찾을 수 있다.
이를 위해 수많은 시간에 대응하는 값을 고르고, 감긴 그래프에서 어느 점인지 확인한 뒤 점의 개수로 나누면 된다. 이 근사는 점의 개수가 늘어날수록 정확해지므로 \( [t_2, t_1] \)의 구간에서 적분하여 모두 더한 뒤 해당 구간의 길이로 나누게 되면 위와 같은 수식이 된다. 이는 감긴 그래프의 무게 중심을 가리키게 된다.
위 무게 중심을 가리키는 수식에서 해당 구간의 길이로 나누던 부분을 제거하면, 물리적으로 어떤 진동수가 오래 지속될수록(많이 감길수록) 그 Spike 되는 진동수에서 푸리에 변환 값이 커지게 만들 수 있다. 이는 해당 주파수 성분이 신호 안에 뚜렷하게 존재한다는 것을 의미한다.
이 시간을 변수로 하는 \( g(t) \)에서 주파수를 변수로 하는 함수인 \( \hat{g}(f) \)로 바꾸면 퓨리에 변환(Fourier Transform)이 정의된다.
$$ \hat{g}(f) = \int_{-t_1}^{t_2} g(t) e^{-j 2\pi f t} \, dt $$
위 푸리에 변환은 유한한 시간 구간에 대해 적분하고 있다. 하지만 푸리에 변환은 이 구간을 음의 무한대에서 양의 무한대로 두기도 한다. 이를 Continuous Fourier Transform(CFT), Continuous-Time Fourier Transform(CTFT)라고 하며, 다음과 같은 수식으로 정의된다.
$$ X(f) = \int_{-\infty}^{\infty} x(t) e^{-j 2\pi f t} \, dt $$
- \( x(t) \): 시간에 따라 변하는 연속 신호. 위 설명에서 \( g(t) \)에 해당
- \( X(f) \): 주파수에 대한 신호의 주파수 스펙트럼. 위 설명에서 \( \hat{g}(f) \)에 해당
- \( j \): 허수 단위
역 푸리에 변환(Inverse Fourier Transform)
마지막으로 역 푸리에 변환(Inverse Fourier Transform)에 대해 간단히 설명하려 한다. 역 푸리에 변환은 주파수 영역에 표현된 신호를 다시 시간 영역 신호로 복원하기 위해 수행한다.
$$ \text{Inverse Fourier Transform} = x(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} X(\omega) e^{j\omega t} \, d\omega $$
$$ \text{Fourier Transform} = X(\omega) = \int_{-\infty}^{\infty} x(t) e^{-j\omega t} \, dt $$
- \( X(ω) \): 주파수 영역 스펙트럼
- \( x(t) \): 시간 영역 신호
- \( \frac{1}{2\pi} \): 정규화 상수
- \( e^{-jωt} \): 복소 지수 함수 (역방향)
- \( dt \): 시간 변수에 대한 적분
푸리에 변환 결과는 주기적(회전 성분)을 가지고 있으므로 역 푸리에 변환 시 \( 2\pi \)로 나누어 스케일을 맞추어야 한다. 연속 푸리에 변환은 적분 구간이 무한대이기 때문이다.
관련 포스팅
2025.04.08 - [Data Science/SR & VC] - 푸리에 급수(Fourier Series)와 푸리에 계수(Fourier Coefficient)
참고 자료
https://en.wikipedia.org/wiki/Fourier_transform
https://darkpgmr.tistory.com/171
https://gaussian37.github.io/math-calculus-euler_formula/
https://www.youtube.com/watch?v=Mc9PHZ3H36M&t=408s