단위원근과 대칭
핵심 질문
단위원 위의 회전값들은 왜 FFT에서 재사용될 수 있을까?
교과서 설명
복소평면에서 단위원 위의 점들은 길이가 1인 복소수다. 이 점들 중에서 N번 곱하면 1로 돌아오는 값들을 1의 N제곱근이라고 부른다.
zN=1
이 점들은 원을 똑같은 각도로 나눈 위치에 있다.
e2πik/N(k=0,1,…,N−1)
DFT에서는 보통 방향이 반대인 기본 회전값을 쓴다.
ωN=e−2πi/N
그리고 그 거듭제곱들을 검사점으로 사용한다.
1,ωN,ωN2,…,ωNN−1
N이 짝수이면 반 바퀴 떨어진 점은 부호만 반대다.
ωNk+N/2=−ωNk
왜냐하면
ωNN/2=e−2πi(N/2)/N=e−πi=−1
이므로
ωNk+N/2=ωNkωNN/2=−ωNk
이기 때문이다. FFT의 butterfly에서 아래쪽 출력의 부호가 바뀌는 이유가 바로 이 식이다.
FFT에는 또 하나의 성질이 꼭 필요하다. N개의 점에서 하나를 골라 제곱하면, 각도가 두 배가 되면서 N/2개의 점 중 하나가 된다.
(ωNk)2=ωN/2k
직접 펼치면
(ωNk)2=(e−2πik/N)2=e−2πik/(N/2)=ωN/2k
이 성질 때문에 짝수 차수와 홀수 차수로 나눈 식의 x2 자리에 들어가는 값들이 “절반 크기 DFT의 검사점”이 된다.
예를 들어 N=8이면 제곱한 값들은 길이 4짜리 단위원근 위로 모인다.
(ω8k)2=ω4k
k=0,1,2,3과 k=4,5,6,7은 제곱한 뒤 같은 네 위치를 한 번 더 지난다. 그래서 길이 8 DFT 안에는 길이 4 DFT 결과를 재사용할 수 있는 구조가 숨어 있다.
원시 단위원근과 직교합
ωN=e−2πi/N은 N번 곱하면 1이 된다.
ωNN=e−2πi=1
또 0,1,…,N−1번째 거듭제곱은 서로 다른 N개의 점을 만든다. 이 점들을 모두 1의 N제곱근이라고 부른다. 그중 ωN처럼 거듭제곱을 반복했을 때 N개의 점을 빠짐없이 지나가는 값을 원시 N제곱근 primitive root of unity라고 부른다.
여기서 “원시”라는 말은 “정확히 N번 돌아야 처음으로 1에 돌아온다”는 뜻에 가깝다. 어떤 수가 N번 곱해서 1이 된다고 해서 항상 원시는 아니다. 예를 들어 N=4에서 −1은
(−1)4=1
이므로 1의 4제곱근이지만, 거듭제곱은
1, −1, 1, −1,…
처럼 두 점만 반복한다. 그래서 −1은 원시 4제곱근이 아니다. 반면 ω4=−i는
1, −i, −1, i
를 모두 지나간 뒤 다시 1로 돌아온다. 그래서 ω4는 원시 4제곱근이다. DFT에는 N개의 서로 다른 검사 방향이 필요하므로, 이렇게 모든 방향을 빠짐없이 만드는 원시 단위원근을 기본 회전값으로 쓴다.
단위원근의 가장 중요한 성질 중 하나는 기하급수 합이다. r=1일 때
1+r+r2+⋯+rN−1=1−r1−rN
이 공식이 왜 나오는지도 한 줄씩 보면 어렵지 않다. 먼저
S=1+r+r2+⋯+rN−1
라고 두고 양쪽에 r을 곱하면
rS=r+r2+⋯+rN−1+rN
이다. 두 식을 빼면 가운데 항이 모두 사라져
S−rS=1−rN
이 되고, 따라서 (1−r)S=1−rN이다. r=1이면 양쪽을 1−r로 나눌 수 있으므로 위의 기하급수 공식이 나온다.
여기서 r=ωNm이고 m이 N의 배수가 아니면 rN=1이면서 r=1이다. 따라서
n=0∑N−1(ωNm)n=0
가 된다. 분자는 1−rN=0이고, 분모는 1−r=0이기 때문이다. 그림으로 보면 원 위에 같은 간격으로 놓인 화살표들을 모두 더하는 것과 같다. 정다각형의 꼭짓점 방향 화살표가 균형을 이루어 원점으로 돌아오므로 합이 0이 된다.
반대로 m이 N의 배수이면 r=ωNm=1이다. 이때는 모든 항이 1이므로 합은 N이다.
n=0∑N−1ωNmn={N,0,m≡0(modN)m≡0(modN)
이 직교합은 역 DFT, 주파수 분리, FFT의 재사용 구조를 모두 지탱하는 핵심 정리다.
실수 신호에서 생기는 켤레 대칭
입력 배열 x[n]이 모두 실수이면 DFT 결과에는 또 하나의 대칭이 생긴다.
X[N−k]=X[k]
즉 앞쪽의 k번째 주파수 값과 뒤쪽의 N−k번째 주파수 값은 켤레 복소수 짝이다. 켤레 복소수는 실수부가 같고 허수부의 부호만 반대이므로, 크기는 서로 같다.
이 성질은 “실수 코사인은 양의 방향 회전과 음의 방향 회전이 한 쌍으로 합쳐진 것”이라는 사실과 연결된다. 그래서 실수 데이터의 FFT 결과를 보면 앞쪽 절반과 뒤쪽 절반이 거울처럼 대응된다. 실전 라이브러리에서 실수 전용 FFT가 계산량과 메모리를 줄일 수 있는 이유도 이 대칭 덕분이다.
처음 배울 때는 이 최적화를 직접 구현하지 않아도 된다. 다만 결과의 절반이 나머지 절반과 독립적인 새 정보가 아니라는 점을 알면, DFT 그래프에서 왜 양쪽 막대가 함께 나타나는지 이해하기 쉽다.
직관 비유
시계 숫자를 생각하자. 12칸짜리 시계에서 3시와 9시는 정확히 반대 방향이다. 한쪽 방향을 알면 반대편은 “부호만 바뀐 방향”으로 바로 알 수 있다. 단위원근도 원 위에서 이런 짝을 이룬다.
예제
N=4일 때 네 점은 다음과 같다.
1,−i,−1,i
기본 회전값은
ω4=e−2πi/4=e−iπ/2=−i
이다. 거듭제곱하면
ω40=1,ω41=−i,ω42=−1,ω43=i
가 된다. 여기서 ω40과 ω42는 서로 반대이고, ω41과 ω43도 서로 반대다.
ω40+2=−ω40,ω41+2=−ω41
손풀이 체크
-
N=8이면 단위원 위의 점은 몇 개일까?
답 보기
8개
-
ω4의 값은?
답 보기
−i
-
ωNk+N/2는 ωNk와 어떤 관계일까?
답 보기
방향이 반대이므로 −ωNk이다.
-
실수 입력의 DFT에서 X[N−k]는 X[k]와 어떤 관계일까?
답 보기
켤레 복소수 짝이다.
다음으로 이어지는 생각
이제 짝수/홀수로 나눈 작은 DFT 결과를 단위원근의 대칭으로 합치면 FFT의 핵심 구조가 나온다.