Q

PRIVATE NAVIGATION MODE

ML4T 탭 잠금 해제

패스워드를 확인하면 이 브라우저에서 ML4T 탭과 검색 결과를 표시합니다.

STUDY SEARCH

학습 자료 검색

제목과 설명, 키워드, 학습 본문에서 찾습니다.

검색 범위

검색어를 입력해 주세요.

SEARCH THE NOTEBOOK

찾고 싶은 금융·통계·전략 개념을 입력해 보세요.

CONCEPTS / FOURIER TRANSFORM / FREQUENCY DOMAIN BASICS

Fourier Transform(푸리에 변환)의 복소 기저와 주파수 성분 분리하기

1Hz와 2Hz 코사인파를 섞은 4개·8개 표본에서 복소 기준 파동과 푸리에 계수를 계산하고, 진폭·위상으로 두 주파수 성분을 분리해 원래 신호를 복원합니다.

Fourier Transform(푸리에 변환)초급 학습 노트

복소 기준 파동으로 주파수 성분 분리하기

복잡한 시간 그래프에 복소 기준 파동을 곱해 푸리에 계수와 진폭·위상을 구하고, 1Hz와 2Hz 성분을 각각 분리한 뒤 다시 합쳐 원래 표본을 복원한다.

복잡한 시간 그래프에서는 반복 속도가 바로 보이지 않는다

교실에서 일정한 간격마다 소리의 세기를 숫자로 적는다고 생각해 보자. 시간에 따라 달라지는 이 숫자 묶음이 Signal(신호)이고, 가로축을 시간으로 놓아 그린 모습이 Time domain(시간 영역)이다.

파동 하나라면 반복 속도를 눈으로 알아보기 쉽다. 여러 파동이 섞이면 그래프가 복잡해져 “1초에 한 번 반복하는 재료가 있는가, 두 번 반복하는 재료도 있는가?”를 바로 답하기 어렵다. 이 질문에 답하도록 같은 신호를 반복 속도별 재료표로 바꾼 모습이 Frequency domain(주파수 영역)이다.

  • Amplitude(진폭)는 파동이 위아래로 흔들리는 세기다.
  • Frequency(주파수)는 1초 동안 반복하는 횟수이며 단위는 Hertz(헤르츠, Hz)다.
  • Period(주기)는 한 번 반복하는 데 걸리는 시간이다.
  • Phase(위상)는 같은 파동이 어느 지점에서 시작하는지를 나타낸다.

각도 360360^\circ는 한 바퀴이고 라디안으로는 2π2\pi다. 이 각도를 사용하면 한 개의 Cosine wave(코사인파)를 다음처럼 만들 수 있다.

x(t)=Acos(2πft+ϕ)x(t)=A\cos\left(2\pi f t+\phi\right)
x(t)x(t)
시각 tt에서 관측한 코사인파의 값
단위: 신호의 측정 단위
AA
파동의 최대 흔들림인 Amplitude(진폭)
단위: 신호의 측정 단위
ff
1초 동안 반복하는 횟수인 Frequency(주파수)
단위: Hz\text{Hz}
tt
관측 시각
단위: s\text{s}
ϕ\phi
파동의 시작 위치인 Phase(위상)
단위: rad\text{rad}

진폭이나 주파수가 다른 코사인파를 더하면 복잡한 모양이 된다. 먼저 아래 도구에서 같은 1초를 네 번 또는 여덟 번 기록해 보자. 아직 계산법을 몰라도 괜찮다. 표본 수를 바꾸었을 때 시간 그래프의 점과 오른쪽 주파수 막대가 함께 바뀐다는 사실만 관찰하면 된다.

INTERACTIVE STUDY TOOL파동을 섞고 다시 주파수로 나누기같은 1초를 4개 점으로 기록하고 시간 그래프와 주파수 재료표를 비교합니다.
장면

현재는 1초를 4번 기록합니다. 본문 손계산과 같은 1Hz·2Hz 코사인파입니다. 네 강조점은 차례로 2, -1, 0, -1입니다.

2Hz
1.0
1Hz
1.0
0도
파동 A파동 B합성 신호
두 코사인파와 합성 신호의 시간 그래프파동 A와 파동 B를 가는 선으로, 두 파동을 더한 값을 굵은 선으로 표시합니다.00.250.50.751x0=2x1=-1x2=0x3=-1시간(초)

찾아낸 주파수 재료

합성 신호에서 찾은 주파수와 진폭4개 표본에서 찾은 각 주파수의 진폭을 막대 높이로 보여 줍니다.00.5101112주파수(Hz)
  • 1Hz진폭 1
  • 2Hz진폭 1

서로 다른 주파수는 각각의 막대로 분리됩니다. 위상을 바꾸면 시간 모양은 달라져도 각 막대의 높이는 유지됩니다.

먼저 손계산에 넣을 시간 표본을 만든다

이제 진폭이 각각 1인 1Hz 코사인파와 2Hz 코사인파를 더한다. 두 모드 모두 관측 시간은 1초다. 달라지는 것은 1초를 네 번 기록하는지, 여덟 번 기록하는지뿐이다.

표본 4개 모드에서는 Sampling rate(표본 추출률)가 4Hz다. nn번째 시각은 tn=n/4t_n=n/4초이므로 먼저 시각을 만든 뒤 두 코사인파에 대입한다.

tn=n4,xn=cos(2π×1×tn)+cos(2π×2×tn)=cos(2π14n)+cos(2π24n).\begin{aligned} t_n&=\frac{n}{4},\\ x_n &=\cos\left(2\pi\times1\times t_n\right) +\cos\left(2\pi\times2\times t_n\right)\\ &=\cos\left(2\pi\frac{1}{4}n\right) +\cos\left(2\pi\frac{2}{4}n\right). \end{aligned}
tnt_n
nn번째 표본을 기록하는 시각
단위: s\text{s}
xnx_n
nn번째 시각에서 두 코사인파를 더한 값
단위: 없음
nn
0부터 3까지의 표본 번호
단위: 없음
nn시간1Hz 성분2Hz 성분xnx_n
000s0\text{s}cos0=1\cos0=1cos0=1\cos0=122
110.25s0.25\text{s}cos(π/2)=0\cos(\pi/2)=0cosπ=1\cos\pi=-11-1
220.5s0.5\text{s}cosπ=1\cos\pi=-1cos(2π)=1\cos(2\pi)=100
330.75s0.75\text{s}cos(3π/2)=0\cos(3\pi/2)=0cos(3π)=1\cos(3\pi)=-11-1

따라서 네 번 기록한 입력은 x=[2,1,0,1]x=[2,-1,0,-1]이다.

이제 목표가 분명해졌다. 현재 예제에서 1Hz와 2Hz로 만든 입력 표본이 푸리에 변환의 각 주파수 칸에 어떻게 나타나는지 확인한다.

숨은 반복을 찾으려면 주파수마다 기준 파동이 필요하다

합성 신호 안에 각 주파수 성분이 얼마나 들어 있는지 알아내는 기본 생각은, 각 후보 주파수와 같은 모양의 기준 파동을 하나씩 대어 보는 것이다. 입력 표본과 기준 파동의 같은 자리 값을 곱해 모두 더하면, 입력 표본이 해당 기준 파동의 주파수 패턴과 얼마나 일치하는지를 나타내는 Fourier coefficient(푸리에 계수) XkX_k가 나온다.

Discrete Fourier Transform(이산 푸리에 변환, DFT)는 여러 파동이 섞인 입력 표본을 주파수별 성분으로 나누는 계산이다.

푸리에 변환의 기준 파동은 코사인 값 하나가 아니라 실수부 cosθk,n\cos\theta_{k,n}와 허수부 sinθk,n-\sin\theta_{k,n}가 결합된 복소값이다. 아래 도구에서는 두 성분을 같은 시간축에 펼쳐 놓고 합성 표본과 곱한 뒤, 실수 방향과 허수 방향의 기여를 각각 더해 하나의 복소 푸리에 계수로 합친다.

INTERACTIVE STUDY TOOL기준 파동을 곱하면 무엇이 남을까?고정된 1Hz+2Hz 합성 신호와 선택한 복소 기준 파동을 같은 시간끼리 곱하고, 실수부와 허수부를 합쳐 푸리에 계수를 확인합니다.
검사할 복소 기준 파동

같은 시간의 복소 기준값과 곱하기

합성 표본과 복소 기준 파동의 같은 시간끼리 곱합니다. 기준 파동은 입력의 구성을 몰라도 k와 N만으로 만들어집니다. 실수부 곱과 허수부 곱은 같은 범위의 두 차트로 나누어 표시합니다.

합성 함수와 표본실수부 Re(b)=cosθ허수부 Im(b)=-sinθ
합성 신호와 1Hz 복소 기준 파동, 실수부 곱과 허수부 곱을 표시한 시간 차트첫 번째 차트에는 1Hz와 2Hz의 합성 신호와 실제 4개 표본을 표시했습니다. 두 번째 차트에는 1Hz 복소 기준 파동의 실수부 1, 0, -1, 0와 허수부 0, -1, 0, 1를 표시했습니다. 세 번째 차트에는 실수부 곱 2, 0, 0, 0을, 네 번째 차트에는 허수부 곱 0, 1, 0, -1을 표시했습니다. 최종 푸리에 계수는 2이며 현재 n=0을 강조했습니다.1. 합성 함수와 표본 xₙ2. 복소 기준 파동 bₖ,ₙ = cosθ - i sinθ3. 실수부 곱 xₙ cosθₖ,ₙ4. 허수부 곱 -xₙ sinθₖ,ₙ신호값 0기저값 0실수 곱 0허수 곱 0n=00sn=10.25sn=20.5sn=30.75sT=1s새 표본 아님시간 t (초)

부드러운 곡선은 파동의 모양을 읽기 위한 미리보기입니다. 실제 푸리에 계수는 강조된 4개 표본점만 곱해 더합니다.

복소 곱의 합

실수부 합 Re(Xₖ)

2 + 0 + 0 + 0 = 2

허수부 합 Im(Xₖ)

0 + 1 + 0 - 1 = 0

최종 푸리에 계수

X1 = 2

현재 위상 0인 1Hz+2Hz 예제에서는 허수 방향의 기여가 서로 상쇄되어 계수가 실수 방향으로 남습니다.

같은 시간의 복소값을 선택하기

카드를 선택하면 합성 표본, 기준 파동의 두 성분과 자리별 복소 곱이 같은 세로선에서 강조됩니다.

각 주파수와 곱할 기준 파동의 표본값을 계산한다

앞에서는 복소 기준 파동의 실수부와 허수부를 같은 시간축에서 펼쳐 보고 합성 표본과 곱해 보았다. 이제 그 복소 기준 파동의 각 표본값이 어떻게 만들어지는지 계산한다.

fkf_k는 합성 신호에서 확인하려는 kk번째 Fourier basis(푸리에 기저), 즉 기준 파동의 주파수다. 관측 시간 TT 동안 kk바퀴 도는 파동이므로 fk=k/Tf_k=k/T이고, 같은 관측 시간을 NN개로 나누면 nn번째 표본 시각은 tn=nT/Nt_n=nT/N이다.

fk=kT,tn=nTN.\begin{aligned} f_k&=\frac{k}{T},\\ t_n&=\frac{nT}{N}. \end{aligned}
fkf_k
kk번째 기준 파동이 1초 동안 반복하는 횟수
단위: Hz\text{Hz}
kk
관측 시간 TT 동안 기준 파동이 도는 바퀴 수
단위: 없음
TT
전체 관측 시간이며 현재 예제에서는 1초
단위: s\text{s}
tnt_n
합성 표본과 기준 파동을 함께 확인하는 nn번째 시각
단위: s\text{s}
NN
관측 시간 안에서 얻은 전체 표본 수
단위: \text{개}
nn
0부터 N1N-1까지의 표본 번호
단위: 없음

현재 페이지는 T=1sT=1\text{s}이므로 k=1k=1은 1Hz 기준 파동이고 k=2k=2는 2Hz 기준 파동이다. 표본 시각 tnt_n을 기준 파동에 대입하면 그때까지 진행한 누적 각도는 다음과 같다.

θk,n=2πfktn=2πknN.\begin{aligned} \theta_{k,n} &=2\pi f_k t_n\\ &=\frac{2\pi kn}{N}. \end{aligned}
θk,n\theta_{k,n}
kk번째 기준 파동이 nn번째 표본까지 진행한 누적 각도
단위: rad\text{rad}
fkf_k
kk번째 기준 파동의 주파수
단위: Hz\text{Hz}
tnt_n
nn번째 표본 시각
단위: s\text{s}
kk
관측 시간 동안 도는 바퀴 수
단위: 없음
nn
표본 번호
단위: 없음
NN
전체 표본 수
단위: \text{개}

한 주파수 kk에서 n=0n=0부터 N1N-1까지 계산한 값을 순서대로 모으면 기준 파동의 전체 각도 목록이 된다.

Θk=[θk,0,,θk,N1]\Theta_k= \left[ \theta_{k,0}, \ldots, \theta_{k,N-1} \right]
Θk\Theta_k
kk번째 기준 파동의 누적 각도 목록
단위: rad\text{rad}
θk,n\theta_{k,n}
nn번째 표본에서 얻은 누적 각도
단위: rad\text{rad}
NN
전체 표본 수
단위: \text{개}

아래 도구에서는 관측 시간 1초를 원 한 바퀴로 보고 현재 표본 수만큼 같은 간격으로 나눈다. kk를 고르면 전체 각도 목록이 만들어지고, nn을 누르면 화살표가 누적 각도만큼 시계 방향으로 이동한다. 한 바퀴를 넘은 누적 각도와 실제 원 위 도착 위치도 따로 확인할 수 있다.

INTERACTIVE STUDY TOOL관측 시간에서 기준 파동의 기저값 만들기관측 시간 1초를 4개 시각으로 나누고, k번째 기준 파동의 각도와 복소 기저값을 차례로 계산합니다.
1. 기준 파동의 주파수 fₖ 선택

2. 관측 시간 T를 표본 시각으로 나누기

바깥 원은 시간 표본 n, 안쪽 마름모는 기준 파동이 도착하는 방향 m=(kn) mod N입니다.

표본 4개와 k=1, n=1의 기준 파동 회전관측 시간 1초를 4개로 나눈 원입니다. 선택한 n=1에서 기준 파동은 누적 각도 π/2만큼 진행했고 원 위 π/2 위치에 있습니다.n=00sn=10.25sn=20.5sn=30.75s한 바퀴의 시간T=1초t=T는 n=0과 겹침 · 새 표본 아님

3. k에 따른 각도 목록에서 n 선택

Θ1 = [0, π/2, π, 3π/2]

4. 선택한 각도를 복소 기저값으로 바꾸기

n=1은 t=0.25초입니다. k=1 기준 파동은 π/2만큼 진행했습니다. 완성한 회전은 0바퀴이고, 현재 원 위 π/2에 도착합니다.

표본 시각
tₙ=1·1/4=0.25s
누적 각도
θₖ,ₙ=2π·1·1/4=π/2 (90°)
곱할 복소 기저값
bk,n=eiθk,n=cos(π2)isin(π2)=i\begin{aligned}b_{k,n}&=e^{-i\theta_{k,n}}\\&=\cos\left(\frac{\pi}{2}\right)-i\sin\left(\frac{\pi}{2}\right)\\&=-i\end{aligned}

완성된 기준 파동의 기저값 목록

B1 = [1, -i, -1, i]

  1. n=01
  2. n=1-i
  3. n=2-1
  4. n=3i

각도 목록을 곱할 복소 기저값 목록으로 바꾼다

정방향 DFT에서 사용하는 기준 파동은 누적 각도에 음수 부호를 붙여 시계 방향으로 돈다. 각 각도를 Euler's formula(오일러 공식)에 대입하면 합성 표본과 곱할 복소 기저값이 된다.

bk,n=eiθk,n=cosθk,nisinθk,n,Bk=[bk,0,,bk,N1].\begin{aligned} b_{k,n} &=e^{-i\theta_{k,n}}\\ &=\cos\theta_{k,n}-i\sin\theta_{k,n},\\ B_k &=\left[b_{k,0},\ldots,b_{k,N-1}\right]. \end{aligned}
bk,nb_{k,n}
kk번째 기준 파동의 nn번째 복소 기저값
단위: 없음
θk,n\theta_{k,n}
kk번째 기준 파동이 nn번째 표본까지 진행한 누적 각도
단위: rad\text{rad}
ii
i2=1i^2=-1을 만족하는 Imaginary unit(허수 단위)
단위: 없음
BkB_k
kk번째 기준 파동의 전체 복소 기저값 목록
단위: 없음
NN
전체 표본 수
단위: \text{개}

기저값과 합성 표본을 곱해 푸리에 계수를 구한다

이제 연속 함수 x(t)x(t) 전체를 한 번에 곱하는 것이 아니라, 같은 표본 번호 nn에 놓인 합성 표본 xnx_n과 복소 기저값 bk,nb_{k,n}을 먼저 곱한다. 이렇게 얻은 NN개의 자리별 곱을 모두 더한 값이 kk번째 주파수의 Fourier coefficient(푸리에 계수) XkX_k다.

Xk=n=0N1xnbk,n=n=0N1xnei2πknN.\begin{aligned} X_k &=\sum_{n=0}^{N-1}x_n b_{k,n}\\ &=\sum_{n=0}^{N-1}x_n e^{-i\frac{2\pi kn}{N}}. \end{aligned}
XkX_k
kk번째 주파수에서 모든 자리별 곱을 더한 푸리에 계수
단위: 입력 신호의 단위
xnx_n
합성 함수에서 얻은 nn번째 표본값
단위: 입력 신호의 단위
bk,nb_{k,n}
kk번째 기준 파동의 nn번째 복소 기저값
단위: 없음
kk
확인할 주파수 칸 번호
단위: 없음
nn
같은 시간끼리 곱할 표본 번호
단위: 없음
NN
전체 표본 수
단위: \text{개}

표본 4개 모드의 합성 표본은 x=[2,1,0,1]x=[2,-1,0,-1]이다. 먼저 1Hz에 해당하는 k=1k=1의 기저값 B1=[1,i,1,i]B_1=[1,-i,-1,i]와 같은 자리끼리 곱한다.

1Hz 기준 파동과 곱하기

nn합성 표본 xnx_n기저값 b1,nb_{1,n}자리별 곱 xnb1,nx_nb_{1,n}
00221122
111-1i-iii
22001-100
331-1iii-i

X1=2+i+0i=2X_1=2+i+0-i=2

iii-i가 서로 상쇄되고 실수 방향의 합 22가 남는다.

2Hz 기준 파동과 곱하기

k=2k=2의 기저값은 B2=[1,1,1,1]B_2=[1,-1,1,-1]이다.

nn합성 표본 xnx_n기저값 b2,nb_{2,n}자리별 곱 xnb2,nx_nb_{2,n}
00221122
111-11-111
22001100
331-11-111

X2=2+1+0+1=4X_2=2+1+0+1=4

같은 모양에 놓인 음수 표본과 음수 기저값을 곱하면 양수가 되므로, 네 자리의 기여가 실수 방향으로 모인다.

XkX_k는 아직 표본 수의 영향을 제거하지 않은 자리별 곱의 합이다. 따라서 같은 파동이라도 표본 수 NN이 달라지면 더하는 항의 수가 달라지고 계수의 크기도 달라질 수 있다.

푸리에 계수의 벡터 크기를 구하고 정규화한다

푸리에 계수 XkX_k는 실수부와 허수부를 가진 복소 벡터다. 이 벡터가 kk번째 기준 파동 방향으로 얼마나 크게 모였는지는 실수부와 허수부로 만든 벡터의 길이 Xk|X_k|로 나타낸다.

같은 파동을 더 많은 표본으로 기록하면 XkX_k에 더하는 항도 많아지므로 Xk|X_k|가 커질 수 있다. 따라서 벡터의 크기 Xk|X_k|를 표본 수 NN으로 나누어 표본 수에 따른 차이를 제거한다. 이렇게 계수의 크기를 공통 기준으로 맞추는 과정을 Normalization(정규화)이라고 한다.

Xk=Re(Xk)+iIm(Xk),Xk=Re(Xk)2+Im(Xk)2,정규화된 크기=XkN=Re(Xk)2+Im(Xk)2N.\begin{aligned} X_k &=\operatorname{Re}(X_k)+i\operatorname{Im}(X_k),\\ |X_k| &=\sqrt{\operatorname{Re}(X_k)^2+\operatorname{Im}(X_k)^2},\\[4pt] \text{정규화된 크기} &=\frac{|X_k|}{N} =\frac{\sqrt{\operatorname{Re}(X_k)^2+\operatorname{Im}(X_k)^2}}{N}. \end{aligned}
XkX_k
kk번째 주파수에서 모든 복소 기여를 더한 정규화 전 푸리에 계수
단위: 입력 신호의 단위
Xk|X_k|
XkX_k의 실수부와 허수부로 구한 정규화 전 복소 벡터의 길이
단위: 입력 신호의 단위
XkN\frac{|X_k|}{N}
표본 수의 영향을 제거한 푸리에 계수 벡터의 정규화된 크기
단위: 입력 신호의 단위
NN
평균을 계산할 전체 표본 수
단위: \text{개}

중요한 순서는 각 기여의 길이를 따로 더하는 것이 아니라 방향을 가진 복소 기여를 먼저 모두 더해 XkX_k를 만드는 것이다. 그다음 최종 벡터의 길이 Xk|X_k|를 구하고, 그 크기를 NN으로 나눈다. 따라서 Xk/N|X_k|/N은 개별 기여 길이의 평균이 아니라 모든 기여가 상쇄·강화된 뒤 남은 벡터 크기를 표본 수로 보정한 값이다.

현재 1Hz의 자리별 복소 기여는 [2,i,0,i][2,i,0,-i]이므로 서로 반대 방향인 iii-i를 먼저 상쇄한다. 그 결과 X1=2+0iX_1=2+0i이고, 벡터의 길이는 X1=22+02=2|X_1|=\sqrt{2^2+0^2}=2다. 이 크기를 네 표본으로 나누면 정규화된 크기를 얻는다.

X1N=X14=24=12\frac{|X_1|}{N}=\frac{|X_1|}{4}=\frac{2}{4}=\frac{1}{2}

여기서 얻은 Xk/N|X_k|/N은 표본 수의 영향을 제거한 푸리에 계수 벡터의 크기다. 아직 최종 진폭은 아니며, 이 단계에서는 정규화된 크기까지만 확인한다.

정규화된 크기에서 원래 진폭을 구한다

나이퀴스트 주파수는 진폭표의 마지막 주파수다

Sampling rate(표본 추출률) fsf_s는 1초 동안 기록한 표본 수다. 표본만 보고 서로 다른 반복을 구별할 수 있는 주파수 범위의 끝이 Nyquist frequency(나이퀴스트 주파수)이며, 표본 추출률의 절반이다.

fs=NT,fNyquist=fs2=N2T.f_s=\frac{N}{T}, \qquad f_{\mathrm{Nyquist}} =\frac{f_s}{2} =\frac{N}{2T}.
fsf_s
1초 동안 기록하는 표본 수인 표본 추출률
단위: Hz\text{Hz}
fNyquistf_{\mathrm{Nyquist}}
표본으로 구별하는 주파수 범위의 끝인 나이퀴스트 주파수
단위: Hz\text{Hz}
NN
관측 시간 동안 기록한 전체 표본 수
단위: \text{개}
TT
전체 관측 시간
단위: s\text{s}

현재처럼 코사인 성분이 DFT 주파수 칸에 정확히 놓인 경우, 각 칸에서 복원할 진폭 AkA_k는 다음 식으로 계산한다.

Ak={XkN,k=0,2XkN,0<k<N2,XkN,k=N2(N이 짝수일 때).A_k= \begin{cases} \dfrac{|X_k|}{N}, & k=0,\\[6pt] \dfrac{2|X_k|}{N}, & 0<k<\dfrac{N}{2},\\[8pt] \dfrac{|X_k|}{N}, & k=\dfrac{N}{2}\quad(N\text{이 짝수일 때}). \end{cases}
AkA_k
kk번째 주파수에서 복구한 코사인파의 진폭
단위: 입력 신호의 단위
Xk/N|X_k|/N
표본 수의 영향을 제거한 푸리에 계수 벡터의 크기
단위: 입력 신호의 단위
k=0k=0
시간에 따라 값이 변하지 않는 0Hz0\text{Hz} 성분
단위: 없음
k=N/2k=N/2
표본 추출률의 절반에 해당하는 나이퀴스트 주파수 칸
단위: 없음

현재는 1초에 4개를 기록하므로 표본 추출률은 4Hz4\text{Hz}이고 나이퀴스트 주파수는 2Hz2\text{Hz}다.

1Hz는 0Hz0\text{Hz}2Hz2\text{Hz} 사이에 있는 일반 주파수다. 위에서 구한 X1=2X_1=2를 사용하면 정규화된 크기는 2/4=1/22/4=1/2이고, 여기에 22를 곱해 원래 진폭 11을 얻는다.

A1=2×X1N=2×24=1A_1=2\times\frac{|X_1|}{N}=2\times\frac{2}{4}=1

2Hz는 현재 모드의 나이퀴스트 주파수다. 위에서 구한 X2=4X_2=4를 표본 수로 나누면 이미 원래 진폭 11이므로 22를 곱하지 않는다.

A2=X2N=44=1A_2=\frac{|X_2|}{N}=\frac{4}{4}=1

주파수주파수 칸의 위치Xk|X_k|Xk/N|X_k|/N추가 보정진폭
1Hz1\text{Hz}일반 주파수221/21/2×2\times 211
2Hz2\text{Hz}나이퀴스트4411없음11

푸리에 계수로 각 주파수 성분을 분리한다

진폭 AkA_k만 알면 해당 주파수가 얼마나 크게 들어 있는지는 알 수 있지만, 파동이 어느 위치에서 시작하는지는 알 수 없다. 복소 푸리에 계수 XkX_k에는 크기뿐 아니라 방향도 있으므로, 그 방향에서 Phase(위상) ϕk\phi_k를 읽으면 하나의 위상 포함 코사인파로 해당 주파수 성분을 복원할 수 있다.

fk=kT,ϕk=atan2(Im(Xk),Re(Xk)),Ak=2XkN(0<k<N2),xk(t)=Akcos(2πfkt+ϕk),x^n=x1,n+x2,n=xn.\begin{aligned} f_k &=\frac{k}{T},\\ \phi_k &=\operatorname{atan2}\left(\operatorname{Im}(X_k),\operatorname{Re}(X_k)\right),\\ A_k &=\frac{2\lvert X_k\rvert}{N} \quad\left(0<k<\frac{N}{2}\right),\\ x_k(t) &=A_k\cos\left(2\pi f_kt+\phi_k\right),\\ \widehat{x}_n &=x_{1,n}+x_{2,n}=x_n. \end{aligned}
fkf_k
kk번째 주파수 성분의 반복 속도
단위: Hz\text{Hz}
kk
분리할 주파수 칸 번호이며 현재 예제에서는 11 또는 22
단위: 없음
TT
전체 관측 시간이며 현재 예제에서는 1초
단위: s\text{s}
ϕk\phi_k
XkX_k의 실수부와 허수부 방향에서 구한 kk번째 성분의 Phase(위상)
단위: rad\text{rad}
AkA_k
일반 주파수에서 복구한 kk번째 코사인파의 진폭
단위: 입력 신호의 단위
xk(t)x_k(t)
푸리에 계수의 진폭과 위상으로 복원한 kk번째 연속 파동
단위: 입력 신호의 단위
x^n\widehat{x}_n
분리한 1Hz 표본 x1,nx_{1,n}과 2Hz 표본 x2,nx_{2,n}을 다시 더한 값
단위: 입력 신호의 단위
xnx_n
원래 합성 신호의 nn번째 표본
단위: 입력 신호의 단위

실수 신호의 일반 주파수는 서로 켤레인 XkX_kXNkX_{N-k}가 한 쌍을 이룬다. 아래 도구는 한 주파수를 분리할 때 이 두 계수만 남기고 나머지 계수를 00으로 만든 다음 Inverse DFT(역 이산 푸리에 변환)를 적용한다. 0Hz0\text{Hz}와 나이퀴스트 주파수는 자기 자신과 겹치므로 계수를 한 번만 사용한다.

현재 예제에서 X1X_1X2X_2는 모두 허수부가 00인 양의 실수이므로 두 위상은 00^\circ다. 따라서 분리한 파동은 각각 x1(t)=cos(2πt)x_1(t)=\cos(2\pi t)x2(t)=cos(4πt)x_2(t)=\cos(4\pi t)가 된다. 표본마다 두 값을 다시 더하면 원래 합성 표본 xnx_n과 일치한다.

INTERACTIVE STUDY TOOL푸리에 계수에서 파동을 하나씩 꺼내기계산된 X₁과 X₂에서 진폭과 위상을 읽어 두 파동을 따로 복원하고, 같은 시간끼리 다시 더해 원래 합성 표본과 비교합니다.

1Hz 성분

푸리에 계수
X1 = 2
진폭
A1 = 2·2/4 = 1
계수에서 읽은 위상
φ1 = atan2(0, 2) =

x1(t) = cos(2πt)

2Hz 성분

푸리에 계수
X2 = 4
진폭
A2 = 1·4/4 = 1
계수에서 읽은 위상
φ2 = atan2(0, 4) =

x2(t) = cos(4πt)

현재 표본 수에서는 나이퀴스트 성분이므로 진폭에 2를 곱하지 않습니다.

원래 합성 신호복원한 1Hz복원한 2Hz
푸리에 계수에서 1Hz와 2Hz를 분리하고 다시 합친 시간 차트첫 번째 영역은 원래 합성 신호 2, -1, 0, -1입니다. 두 번째 영역은 X1에서 복원한 1Hz 성분 1, 0, -1, 0이고, 세 번째 영역은 X2에서 복원한 2Hz 성분 1, -1, 1, -1입니다. 네 번째 영역에서 두 성분의 합 2, -1, 0, -1이 원래 표본과 일치하며 현재 n=0을 강조했습니다.1. 원래 합성 신호 xₙ20-22. X₁에서 분리한 1Hz 성분10-13. X₂에서 분리한 2Hz 성분10-14. 분리한 성분의 합 x̂ₙ과 원래 xₙ20-2n=00sn=10.25sn=20.5sn=30.75sT=1s새 표본 아님

부드러운 곡선은 표본 사이의 파동 모양을 읽기 위한 미리보기입니다. 실제 분리와 재합성은 현재 4개 표본과 푸리에 계수로 계산합니다.

표본 4개 모드에서 2Hz는 나이퀴스트 주파수입니다. 따라서 DFT가 정확히 복원하는 대상은 표시된 표본점이며, 점 사이의 2Hz 곡선은 현재 위상 0 예제와 일치하는 모양 안내입니다.

같은 시각에서 분리한 값 다시 더하기

표본을 선택하면 1Hz와 2Hz의 값이 원래 합성 표본을 만드는 과정을 네 차트의 같은 세로선에서 확인할 수 있습니다.

n=0, t=0초: 1Hz 1 + 2Hz 1 = 재합성 2 = 원래 표본 2

주의: 푸리에 변환은 관측하기 전의 연속 신호가 실제로 어떤 파동들의 조합으로 만들어졌는지까지 보장하지는 않는다. 대신 주어진 합성 표본을 정확히 재현하는 각 주파수 칸의 푸리에 계수 XkX_k를 계산한다. XkX_k의 크기와 방향에서 각 성분의 진폭과 위상을 구하고, 이 성분들을 다시 합하면 원래 합성 표본이 복원된다.