푸리에 변환

편집 역사 토론
수치해석 계산물리 마지막 수정: 2026-07-30 04:13:41

1. 개요[편집]

어떤 신호든 사인파의 합이다. 문제는 그 합이 무한하다는 것.

푸리에 변환(Fourier transform)은 시간(또는 공간)의 함수를 진동수(파수)의 함수로 바꾸는 적분 변환으로, 신호를 서로 직교하는 복소지수 eiωte^{i\omega t} 들의 중첩으로 분해한다.

f^(ω)=f(t)eiωtdt,f(t)=12πf^(ω)e+iωtdω\hat{f}(\omega) = \int_{-\infty}^{\infty} f(t)\, e^{-i\omega t}\, dt, \qquad f(t) = \frac{1}{2\pi}\int_{-\infty}^{\infty} \hat{f}(\omega)\, e^{+i\omega t}\, d\omega

이 문서는 변환 자체의 수학과 성질을 다룬다. 이산 푸리에 변환을 O(NlogN)O(N\log N) 에 계산하는 알고리즘은 고속 푸리에 변환이 따로 맡고 있다. 변환이 무엇인지와 그것을 어떻게 빨리 계산하는지는 완전히 다른 이야기이며, 실무에서 사람을 괴롭히는 것은 대개 후자가 아니라 전자다 — 에일리어싱과 누설로 망가진 스펙트럼은 FFT를 아무리 빨리 돌려도 망가진 채로 나온다.1

2. 네 가지 얼굴[편집]

푸리에 변환은 하나가 아니라, 정의역이 연속이냐 이산이냐·주기적이냐 아니냐에 따라 네 개의 판본을 가진다. 국룰은 “한쪽이 이산이면 반대쪽은 주기적” 이다.

시간 영역주파수 영역이름
연속·비주기연속·비주기연속 푸리에 변환 (FT)
연속·주기이산·비주기푸리에 급수
이산·비주기연속·주기이산시간 푸리에 변환 (DTFT)
이산·유한이산·유한이산 푸리에 변환 (DFT)

컴퓨터가 다룰 수 있는 것은 넷 중 DFT뿐이다. 나머지 셋 중 하나라도 무한하거나 연속이면 메모리에 안 들어가기 때문. 그래서 실제 계산은 언제나 “연속 신호를 표본화하고, 유한 구간에서 자르고, DFT를 돌린다” 는 3단 근사이며, 표본화가 에일리어싱을, 자르기가 누설을 낳는다. 두 오차의 출처가 이렇게 명확한데도 매년 수많은 스펙트럼이 이 두 가지로 망가진다.

3. 성질 — 이것들 때문에 쓴다[편집]

성질시간 영역주파수 영역
시간 이동f(tt0)f(t-t_0)eiωt0f^(ω)e^{-i\omega t_0}\hat f(\omega)
미분f(t)f'(t)iωf^(ω)i\omega\, \hat f(\omega)
합성곱(fg)(t)(f * g)(t)f^(ω)g^(ω)\hat f(\omega)\,\hat g(\omega)
f(t)g(t)f(t)g(t)합성곱의 1/2π1/2\pi
신축f(at)f(at)f^(ω/a)\hat f(\omega/a)1/a1/\lvert a\rvert

이 중 시뮬레이션 하는 사람이 매일 쓰는 것이 미분 성질이다. 미분이 iωi\omega 곱셈으로, 라플라시안이 k2-|\mathbf{k}|^2 곱셈으로 바뀐다는 사실 하나로 스펙트럴 방법의 존재 이유가 설명된다. 미분 연산자가 대각화되므로 미분 정확도가 격자 간격의 멱이 아니라 표현 가능한 파수 전 대역에서 정확해지고, 이것이 매끄러운 해에서의 지수 수렴으로 이어진다. 같은 이유로 주기 경계의 포아송 방정식 2ϕ=ρ\nabla^2\phi = -\rho 는 푸리에 공간에서 ϕ^k=ρ^k/k2\hat\phi_{\mathbf k} = \hat\rho_{\mathbf k}/|\mathbf{k}|^2 라는 나눗셈 한 줄이 된다.2

합성곱 정리는 필터링·상관·격자 보간의 전부다. 물리 공간에서 O(N2)O(N^2) 인 합성곱이 주파수 공간에서 원소별 곱이 되므로, 변환 두 번과 곱 한 번으로 끝난다. 에발트 합산의 PME가 장거리 쿨롱 상호작용을 격자에 뿌려 놓고 FFT를 돌리는 것도 같은 발상이다.

파세발 정리는 에너지가 두 영역에서 같다는 진술이다.

f(t)2dt=12πf^(ω)2dω\int_{-\infty}^{\infty} |f(t)|^2\, dt = \frac{1}{2\pi}\int_{-\infty}^{\infty} |\hat f(\omega)|^2\, d\omega

DFT 판본은 nxn2=1NkXk2\sum_n |x_n|^2 = \frac{1}{N}\sum_k |X_k|^2 다. 코드에 정규화 상수를 어디에 넣었는지 헷갈릴 때 이 항등식으로 검산하는 것이 국룰이고, 난류 에너지 스펙트럼 E(k)E(k) 의 적분이 운동에너지와 일치해야 한다는 요구도 여기서 나온다.

한편 시간 이동이 크기 스펙트럼을 전혀 바꾸지 않고 위상만 회전시킨다는 사실은 축복이자 저주다. 덕분에 진폭 스펙트럼은 신호의 정렬에 둔감하지만, 반대로 크기만 보고 위상을 버리면 신호의 모양 정보가 통째로 날아간다. 이미지의 위상만 남기고 크기를 바꿔치기해도 원본이 알아보이는 유명한 실험이 이 비대칭성을 보여 준다.

4. 표본화 정리와 에일리어싱[편집]

간격 Δt\Delta t 로 표본화하면 스펙트럼이 fs=1/Δtf_s = 1/\Delta t 주기로 무한히 복제된다. 원 신호의 대역이 fmaxf_{\max} 로 제한돼 있고

fs>2fmaxf_s > 2 f_{\max}

이면 복제본끼리 겹치지 않아 원 신호를 완벽하게 복원할 수 있다. 이것이 나이키스트-섀넌 표본화 정리이고, fs/2f_s/2 를 나이키스트 진동수라 한다.

조건이 깨지면 대역 밖 성분이 접혀 들어와 falias=fkfsf_{\text{alias}} = |f - k f_s| 위치의 가짜 저주파로 둔갑한다. 무서운 점은 한번 접히면 원상 복구가 불가능하다는 것. 그래서 데이터 취득에서는 AD 변환 앞단에 아날로그 저역통과 필터를 반드시 붙이고, 이걸 빼먹은 계측 데이터는 사후에 아무리 좋은 필터를 걸어도 살릴 수 없다.

수치해석 쪽 사촌이 유사스펙트럴 방법의 별칭 오차다. 물리 공간에서 두 파를 곱하면 최대 파수가 두 배가 되어 격자가 담을 수 없는 성분이 접혀 들어오는데, 상위 1/3 파수를 잘라내는 오르작의 2/3 규칙이 표준 처방이다. 컴퓨터 그래픽스안티앨리어싱도 이름 그대로 같은 현상의 공간 판본이다.

5. 스펙트럼 누설과 윈도 함수[편집]

유한 구간에서 신호를 자르는 것은 곧 사각창을 곱하는 것이고, 곱은 주파수 영역에서 합성곱이므로, 실제로 보게 되는 스펙트럼은 진짜 스펙트럼과 창의 변환(디리클레 커널)의 합성곱이다. 주파수가 DFT 격자점에 정확히 안 떨어지면 에너지가 옆 빈으로 새어 나가는데, 이것이 스펙트럼 누설(leakage)이다.

사각창의 최대 사이드로브는 주엽 대비 약 13dB-13\,\mathrm{dB} 에 불과해서, 큰 성분 옆의 작은 성분이 그대로 묻힌다. 게다가 빈 사이에 걸친 성분은 진폭이 최대 3.9dB3.9\,\mathrm{dB} 까지 과소평가된다(스캘롭 손실). 그래서 창을 갈아 끼운다.

최대 사이드로브주엽 폭쓰임
사각13-13 dB가장 좁음과도신호, 주기 정렬된 데이터
해닝32-32 dB사각의 2배범용 국룰
해밍43-43 dB사각의 2배인접 성분 분리
블랙만-해리스92-92 dB사각의 4배동적 범위가 큰 스펙트럼
플랫탑낮음매우 넓음진폭 정확도 우선(교정용)

여기에도 공짜는 없다 — 사이드로브를 눌러 누설을 줄이면 주엽이 넓어져 분해능이 나빠진다. 윈도 함수 선택은 “새는 걸 막을까, 붙어 있는 두 봉우리를 구분할까”의 거래다. 참고로 영을 덧붙이는 제로 패딩은 분해능을 올리지 않는다. 주파수 격자만 촘촘해질 뿐 실제 분해능은 관측 길이 TT 가 정하는 1/T1/T 그대로다.3

N=256 radix-2 FFT를 매 프레임 실제로 돌린다. f₁을 빈 사이(40.5)로 옮기면 사각창에서 누설 치마가 쫙 퍼지고, 창을 한·블랙만으로 바꾸면 사이드로브가 눌리는 대신 주엽이 넓어지는 거래가 그대로 보인다. f₁이 나이퀴스트 128을 넘으면 피크가 접히는데, 표시되는 겉보기 빈은 예측식이 아니라 스펙트럼의 argmax로 실측한 값이다. 파세발 등식의 상대오차를 같이 띄워 변환이 맞았음을 보인다.

6. 불확정성 — 시간과 주파수를 동시에 못 본다[편집]

시간 폭과 주파수 폭을 표준편차로 정의하면 다음 부등식이 항상 성립한다.

σtσω12\sigma_t\,\sigma_\omega \ge \frac{1}{2}

등호는 가우스 함수에서만 성립한다(가우시안은 푸리에 변환의 고정점이기도 하다). 양자역학의 하이젠베르크 부등식은 이 순수한 조화해석 사실에 \hbar 를 곱한 것에 지나지 않는다.

공학적 의미는 잔인하다. 짧은 창은 시간 위치를 잘 알려주고 주파수를 못 알려주며, 긴 창은 그 반대다. 신호의 주파수가 시간에 따라 변하는 순간(처프, 충격, 비정상 진동) 단일 푸리에 변환은 “그 주파수가 어딘가에는 있었다”는 것만 말해 준다. 그래서 단시간 푸리에 변환(스펙트로그램)으로 창을 미끄러뜨리거나, 고주파에서는 창을 짧게 저주파에서는 길게 자동 조절하는 웨이블릿 변환으로 넘어간다. 어느 쪽도 위 부등식을 이기지는 못하고, 다만 시간-주파수 평면의 타일 모양을 문제에 맞게 고를 뿐이다.

7. 시뮬레이션에서 어디에 쓰는가[편집]

  • 스펙트럴 방법직접수치모사: 주기 상자 안 균질 난류의 표준 도구. 미분은 스펙트럴 공간, 비선형 곱은 물리 공간에서 처리하고 두 공간을 FFT로 오간다.
  • FFT 포아송 솔버: 주기 경계에서 압력 포아송 방정식이 파수별 나눗셈으로 즉시 풀린다. k=0\mathbf{k}=0 모드는 평균값 자유도라 따로 고정해 줘야 하며, 이걸 빼먹으면 해가 발산한다.
  • 에발트 합산: 장거리 쿨롱을 실공간과 역공간으로 쪼개고, 역공간 몫을 격자 위 FFT로 계산한다.
  • 에너지 스펙트럼: E(k)E(k) 를 그려 5/3-5/3 관성영역이 보이는지, 격자 스케일에서 에너지가 쌓이는지를 진단한다. 콜모고로프 스케일 참고. 비주기·불균일 데이터라면 FFT를 못 쓰므로 구조함수 쪽으로 갈아탄다.
  • 주파수 응답 해석모드 해석: 시간영역 충격 응답을 FRF로 바꾸고, 피크에서 고유진동수와 감쇠를 뽑는다. 실측 진동 데이터의 PSD 추정에는 구간을 겹쳐 평균하는 웰치 방법이 표준이다.
  • 폰 노이만 안정성 해석: 오차를 푸리에 모드로 전개해 증폭인자를 파수별로 보는 것이 전부다. 수치 소산과 분산의 정의 자체가 증폭인자의 크기와 위상이다.

8. 관련 문서[편집]

9. Footnotes[편집]

  1. “FFT 결과가 이상해요”라는 질문의 9할은 알고리즘이 아니라 표본화 주파수, 창 함수, 정규화 상수 셋 중 하나다. 나머지 1할은 데이터에 DC 성분과 선형 추세가 그대로 들어 있는 경우.

  2. 이산 격자에서는 k2-|\mathbf{k}|^2 대신 차분 도식에 대응하는 수정 파수를 써야 한다. 2차 중심차분이라면 4Δx2sin2(kΔx/2)-\frac{4}{\Delta x^2}\sin^2(k\Delta x/2). 이걸 안 맞추고 연속 파수를 그대로 쓰면 속도장의 발산이 기계 정밀도까지 떨어지지 않아, 비압축성 코드에서 정체불명의 질량 생성이 생긴다.

  3. “제로 패딩으로 분해능이 좋아졌다”는 착각이 흔한 이유는 그래프가 실제로 매끄러워지기 때문이다. 하지만 그건 이미 가진 DTFT를 더 촘촘히 표본화해 그린 것일 뿐, 없던 정보가 생긴 게 아니다. 붙어 있는 두 봉우리를 갈라 보고 싶으면 방법은 하나 — 더 오래 측정하는 것.