되풀이되지 않는 신호도 모든 주파수의 사인파로 나눌 수 있고, 주파수마다의 세기를 모은 것이 스펙트럼이다. 프리즘이 빛을 색깔별로 펼치는 것과 같다. 가장 큰 장점은, 두 신호를 겹쳐 미끄러뜨리며 곱해 더하는 번거로운 연산(합성곱)이 주파수 쪽에서는 그냥 곱셈이 된다는 것이다. 그래서 필터와 흐림 효과를 “특정 주파수를 줄이는 곱셈”으로 설계한다. 대신 신호가 시간에서 짧게 몰릴수록 스펙트럼은 넓게 퍼져, 두 쪽에서 동시에 좁게 만들 수는 없다.
예시로 보기
높이 1, 폭 1인 상자 모양 펄스(구간 \(\vert x\vert < \frac12\)에서 1, 밖에서 0)를 주파수로 펼치면
\[\hat f(\xi) = \frac{\sin\pi\xi}{\pi\xi}\quad(\xi = 0\text{에서는 }1)\]인 sinc 함수가 나온다. 주파수 0(평균)에서 가장 크고, \(\xi = \frac12\)에서 \(\frac2\pi \approx 0.64\), 정수 주파수에서 0이다. 뚝 끊기는 모서리를 만들려면 높은 주파수가 끝없이 필요해서 꼬리가 길게 이어진다.
펄스 폭을 2로 늘이면 첫 0점이 \(\xi = 1\)에서 \(\frac12\)로 당겨진다. 시간에서 넓어지면 주파수에서 좁아진다. 여기서 \(x\)는 시간(또는 위치), \(\xi\)는 1초당 진동 수이고, 아래 정의의 적분이 이 계산이다.
왼쪽 상자가 넓어지면(주황), 오른쪽 스펙트럼은 가운데 봉우리가 높고 좁아진다. 점은 각 스펙트럼이 처음 0이 되는 곳으로, 파랑은 \(\xi = 1\), 주황은 \(\xi = \frac12\)이다1.
정의
실수 전체에서 \(\int\vert f\vert < \infty\)(\(\int\)는 넓이를 구하는 적분 기호)인 함수 \(f\)의 푸리에 변환은
\[\hat f(\xi) = \int_{-\infty}^{\infty}f(x)\,e^{-2\pi i x\xi}\,dx,\]적당한 조건(예: \(f\)와 \(\hat f\)가 모두 매끄럽고 빨리 줄어듦)에서 역변환 \(f(x) = \int_{-\infty}^{\infty}\hat f(\xi)\,e^{2\pi i x\xi}\,d\xi\)로 되돌아온다. 두 함수의 합성곱은
\[(f * g)(x) = \int_{-\infty}^{\infty}f(y)\,g(x - y)\,dy\]다. 한 함수를 뒤집어 \(x\)만큼 밀면서 겹친 부분의 곱을 더한 값이다2.
푸리에 급수는 주기 신호에 정수배 주파수만 썼다. 주기를 한없이 늘리면 주파수 간격이 0으로 좁아지고, 계수의 합이 이상적분이 된 것이 푸리에 변환이다. 책마다 지수를 \(-i\omega x\)로 쓰고 앞에 \(\frac{1}{2\pi}\)나 \(\frac{1}{\sqrt{2\pi}}\)를 붙이기도 한다. 결과를 옮겨 올 때는 규약부터 확인한다.
- 합성곱 정리: \(\widehat{f * g} = \hat f\,\hat g\).
- 이동: \(f(x - a)\)의 변환은 \(e^{-2\pi i a\xi}\hat f(\xi)\). 크기는 그대로이고 위상만 돈다.
- 변조: \(f(x)\cos(2\pi\xi_0 x)\)의 변환은 \(\frac12\big(\hat f(\xi - \xi_0) + \hat f(\xi + \xi_0)\big)\). 스펙트럼이 \(\pm\xi_0\)로 옮겨 간다.
- 늘이기: \(a > 0\)일 때 \(f(ax)\)의 변환은 \(\frac1a\hat f\left(\frac\xi a\right)\).
- 가우스 함수: \(e^{-\pi x^2}\)의 변환은 자기 자신이다.
합성곱 정리의 증명
- 정의 대입: \(\widehat{f * g}(\xi) = \int\left(\int f(y)g(x - y)\,dy\right)e^{-2\pi i x\xi}\,dx\).
- 순서 바꾸기: \(f, g\)가 절대적분 가능하면 푸비니 정리로 적분 순서를 바꾼다. \(\int f(y)\left(\int g(x - y)e^{-2\pi i x\xi}\,dx\right)dy\).
- 치환: 안쪽에서 \(u = x - y\)로 두면 \(e^{-2\pi i x\xi} = e^{-2\pi i y\xi}e^{-2\pi i u\xi}\)라 안쪽 적분은 \(e^{-2\pi i y\xi}\hat g(\xi)\).
- 정리: \(\hat g(\xi)\int f(y)e^{-2\pi i y\xi}\,dy = \hat f(\xi)\hat g(\xi)\). ∎
핵심은 3단계다. 지수함수가 “더하기를 곱하기로” 바꾸는 성질(\(e^{a + b} = e^ae^b\)) 때문에, 겹쳐 밀기가 주파수마다 따로 노는 곱셈으로 풀린다.
왼쪽은 상자 \(f\)와, 같은 상자를 뒤집어 \(x = 0.4\)만큼 민 \(g(0.4 - y)\)다. 둘이 겹친 초록 칸의 넓이 0.6이 합성곱 \((f * g)(0.4)\), 곧 초록 삼각형 위의 점이다. \(x\)를 옮겨 가며 이 넓이를 찍으면 삼각형이 된다. 오른쪽은 그 삼각형의 스펙트럼으로, 상자의 스펙트럼 sinc를 제곱한 모양이다1.
예제
주파수 분할 다중화. 전화 음성처럼 0~4 kHz 대역만 쓰는 신호 여러 개를 한 선로로 보낸다.
- 변조: 신호에 반송파 \(\cos(2\pi\cdot 100\text{ kHz}\cdot t)\)를 곱한다. 성질 3으로 스펙트럼이 100 kHz 양옆, 곧 96~104 kHz로 옮겨진다(음의 주파수 쪽 거울상은 실수 신호라 대칭으로 따라온다).
- 다른 채널: 둘째 신호는 110 kHz 반송파에 실어 106~114 kHz를 쓴다. 두 대역이 겹치지 않는다.
- 받기: 수신 쪽은 대역 통과 필터로 원하는 구간만 골라 같은 반송파를 다시 곱하고, 낮은 주파수만 남긴다.
- 결론: 반송파 간격이 신호 대역폭의 두 배(8 kHz)보다 좁으면 스펙트럼이 겹쳐 서로 섞인다. 이것이 주파수 분할 다중화의 수학이다. 실제 전화망은 양쪽 대역 중 한쪽만 남겨 채널당 4 kHz를 쓴다3.
활용
- 필터. 잡음을 줄이는 저역 통과 필터는 스펙트럼에 “낮은 주파수는 1, 높은 주파수는 0에 가까운” 함수를 곱하는 것이고, 시간 쪽에서는 그 함수의 역변환과의 합성곱이다.
- 이미지 흐림. 가우스 흐림은 이미지와 가우스 함수의 합성곱이다. 가우스의 변환도 가우스라 높은 주파수(세밀한 무늬)가 부드럽게 줄어든다.
- 빠른 합성곱. 길이 \(n\) 수열의 합성곱을 직접 계산하면 \(O(n^2)\)이지만, FFT로 변환해 곱하고 되돌리면 \(O(n\log n)\)이다.
- CNN. 합성곱 신경망의 합성곱 층은 필터를 뒤집지 않고 밀며 곱해 더한다(상호상관). 이름은 합성곱이지만, 필터를 학습하므로 뒤집었는지는 결과에 영향이 없다4.
- 불확정성. 신호의 퍼진 정도 \(\Delta x\)와 스펙트럼의 퍼진 정도 \(\Delta\xi\)(각각 \(\vert f\vert ^2\), \(\vert \hat f\vert ^2\)의 표준편차) 사이에 \(\Delta x\,\Delta\xi \ge \frac{1}{4\pi}\)가 맞고, 가우스 함수에서 등호다2. 짧은 펄스로 빠르게 보내려면 넓은 대역이 필요하다는 통신의 기본 제약이다.
flowchart LR
FG["두 수열 f, g"] -- "직접 겹쳐 밀며 곱해 더한다, O(n²)" --> R["합성곱 f * g"]
FG -- "FFT, O(n log n)" --> H["두 스펙트럼"]
H -- "주파수마다 곱한다, O(n)" --> P["스펙트럼의 곱"]
P -- "역 FFT, O(n log n)" --> R
두 길은 같은 결과에 닿는다(합성곱 정리). 아래로 돌아가는 길은 세 번을 거쳐도 위의 직접 계산보다 싸다5.
연결
- 선수: 푸리에 급수, 이상적분, 오일러 공식
- 이산판: 이산 푸리에 변환과 FFT의 합성곱 정리
- 다른 과목에서: 주파수 분할 다중화(변조 성질), 확률과 통계의 독립 확률변수의 합(밀도의 합성곱, 중심극한정리)
확인 문제
C1 폭 1인 상자함수의 푸리에 변환을 \(\xi = \frac12\)에서 계산하라.
답: \(\int_{-1/2}^{1/2}e^{-2\pi i x\xi}dx = \frac{\sin\pi\xi}{\pi\xi}\)이므로 \(\frac{\sin(\pi/2)}{\pi/2} = \frac2\pi \approx 0.637\).
C2 합성곱이 주파수 쪽에서 곱셈이 되는 이유를 증명의 핵심 단계로 설명하라.
답: \(g(x - y)\)에 곱해진 \(e^{-2\pi i x\xi}\)를 \(x = y + (x - y)\)로 쪼개면 지수법칙으로 \(e^{-2\pi i y\xi}\cdot e^{-2\pi i(x - y)\xi}\)가 된다. 앞쪽은 \(f(y)\)와 묶여 \(\hat f\)가, 뒤쪽은 \(g(x - y)\)와 묶여 \(\hat g\)가 된다. 순서를 바꿀 수 있는 것은 푸비니 정리 덕분이다.
C3 0~4 kHz 음성 신호에 100 kHz 코사인 반송파를 곱하면 스펙트럼은 어디에 놓이는가? 이런 채널 여러 개를 겹치지 않게 놓으려면 반송파 간격은 최소 얼마인가?
답: 변조 성질로 96~104 kHz(와 음의 주파수 쪽 거울상)에 놓인다. 채널마다 8 kHz 폭을 차지하므로 반송파 간격이 8 kHz 이상이어야 한다. 딱 8 kHz면 경계에서 맞닿고, 5 kHz면 101~104 kHz가 겹친다. 실제로는 필터가 완벽하지 않아 보호 대역을 더 둔다.
-
31_fourier-transform_plot.py로 그렸고, \(\hat f(\frac12) = \frac2\pi\), 정수 주파수와 폭 2의 \(\xi = \frac12\)에서 0, 겹친 넓이 0.6과 삼각형 값, 삼각형을 수치로 변환한 값이 \(\mathrm{sinc}^2\)와 같은 것을 같은 코드로 확인했다. ↩ ↩2
-
Stein, Shakarchi, Fourier Analysis: An Introduction, 5장 “The Fourier Transform on R”(\(e^{-2\pi ix\xi}\) 규약, 가우스 함수, 합성곱, 역변환 공식, 하이젠베르크 불확정성 원리). ↩ ↩2
-
반송파를 곱하면 양쪽 측파대가 생기고, 한쪽 측파대만 남기는 방식(SSB)이 대역을 절반만 쓴다는 것은 변조 성질에서 바로 나온다. 연결된 컴퓨터 통신 문서의 60~64 kHz 채널(반송파 64 kHz)이 한쪽 측파대를 쓴 배치다. 대역 수치는 31_fourier-transform_verify.py에서 DFT로 확인했다. ↩
-
Goodfellow, Bengio, Courville, Deep Learning, 9.1절 “The Convolution Operation”(많은 라이브러리가 상호상관을 합성곱이라 부른다). ↩
-
활용 절의 빠른 합성곱과 정리의 합성곱 정리를 근거로 그렸다. 이산 수열에서 DFT의 곱은 순환 합성곱이라, 보통의 합성곱을 얻으려면 두 수열 뒤에 0을 덧붙여 길이를 늘린 뒤 변환한다. 이산 순환 합성곱 = DFT 곱은 31_fourier-transform_verify.py에서 확인했다. ↩