요약

주기 \(N\)인 수열도 고조파 \(e^{jk(2\pi/N)n}\)의 합으로 나눌 수 있다. 연속 시간과 다른 점은, 이산 시간에서는 서로 다른 고조파가 딱 \(N\)개뿐이라 급수가 무한합이 아니라 \(N\)개 항의 유한합이라는 것이다. 그래서 수렴 걱정이 없고, \(N\)개의 값을 \(N\)개의 계수로 정확히 바꿨다가 정확히 되돌릴 수 있다. 계수도 주기 \(N\)으로 되풀이되므로, 아무 \(N\)칸 구간이나 하나만 보면 된다.

예시로 보기

주기 4인 수열이 한 주기에 \(x[0] = 1\), \(x[1] = 0\), \(x[2] = 2\), \(x[3] = -1\)이다.

이 수열을 \(x[n] = \sum_{k=0}^{3}a_ke^{jk(2\pi/4)n}\)으로 쓰고 싶다. \(e^{j(2\pi/4)} = j\)이므로 \(n = 0, 1, 2, 3\)을 넣으면 미지수 넷, 식 넷인 연립방정식이 된다.

\[\begin{aligned} a_0 + a_1 + a_2 + a_3 &= 1\\ a_0 + ja_1 - a_2 - ja_3 &= 0\\ a_0 - a_1 + a_2 - a_3 &= 2\\ a_0 - ja_1 - a_2 + ja_3 &= -1\end{aligned}\]

풀면 \(a_0 = \frac12\), \(a_1 = -\frac{1+j}{4}\), \(a_2 = 1\), \(a_3 = \frac{-1+j}{4}\)이다. 연립방정식을 매번 풀지 않고 계수를 바로 구하는 공식이 분석식이다.

정의

주기 \(N\)(\(x[n] = x[n+N]\)), 기본 주파수 \(\omega_0 = \frac{2\pi}{N}\)인 수열에서 고조파는 \(\phi_k[n] = e^{jk(2\pi/N)n}\)이다. 이산 복소 지수의 성질로 \(\phi_{k+N} = \phi_k\)라서 서로 다른 것은 연속한 \(N\)개뿐이다. 합을 연속한 \(N\)개 \(k\)에 대해서만 한다는 뜻으로 \(\sum_{k = \langle N\rangle}\)이라 쓴다. \(k = 0, \dots, N-1\)이든 \(k = 3, \dots, N+2\)든 결과가 같다.

이산 시간 푸리에 급수 쌍
\[x[n] = \sum_{k=\langle N\rangle}a_ke^{jk\omega_0n} = \sum_{k=\langle N\rangle}a_ke^{jk(2\pi/N)n} \qquad \text{(합성식)}\] \[a_k = \frac1N\sum_{n=\langle N\rangle}x[n]e^{-jk\omega_0n} = \frac1N\sum_{n=\langle N\rangle}x[n]e^{-jk(2\pi/N)n} \qquad \text{(분석식)}\]

한 주기 합의 공식. 계수 공식의 열쇠다.

\[\sum_{n=\langle N\rangle}e^{jk(2\pi/N)n} = \begin{cases}N & k = 0, \pm N, \pm 2N, \dots\\ 0 & \text{그 밖}\end{cases}\]

\(k\)가 \(N\)의 배수면 모든 항이 \(e^{j2\pi(\text{정수})} = 1\)이라 \(N\)이다. 아니면 등비수열의 합 \(\sum_{n=0}^{N-1}a^n = \frac{1 - a^N}{1 - a}\)에서 \(a^N = e^{j2\pi k} = 1\)이라 분자가 0이다. 예: \(N = 4\), \(k = 1\)이면 \(1 + j - 1 - j = 0\).

분석식 유도
  1. 합성식 양변에 \(e^{-jr(2\pi/N)n}\)을 곱하고 \(N\)칸 더한다: \(\sum_nx[n]e^{-jr(2\pi/N)n} = \sum_n\sum_ka_ke^{j(k-r)(2\pi/N)n}\)
  2. 유한합이라 순서를 바꿔도 된다: \(= \sum_ka_k\sum_ne^{j(k-r)(2\pi/N)n}\)
  3. 한 주기 합의 공식: \(k\)와 \(r\)을 같은 범위에서 고르면 \(k = r\)일 때만 \(N\), 나머지는 0
  4. 오른쪽은 \(Na_r\), 그래서 \(a_r = \frac1N\sum_nx[n]e^{-jr(2\pi/N)n}\)

계수도 주기 \(N\). \(a_{k+N} = a_k\)다. \(e^{-j(k+N)(2\pi/N)n} = e^{-jk(2\pi/N)n}\)이기 때문이다. 연속 시간의 계수는 \(k\)마다 다르지만, 이산 시간의 계수는 막대그래프가 \(N\)칸마다 똑같이 반복된다(그림 3.13).

수렴 문제가 없다. 분석식은 \(N\)개의 수를 \(N\)개의 계수로 바꾸고, 합성식은 유한한 \(N\)개 항이라 그대로 되돌린다. 부분합 \(\hat x[n] = \sum_{k=-M}^{M}a_ke^{jk(2\pi/N)n}\)은 항이 \(N\)개가 되는 순간(\(N\)이 홀수면 \(M = \frac{N-1}{2}\)) 원래 수열과 정확히 같다. 깁스 현상이 없다(그림 3.18). 연속 시간 주기 신호는 한 주기에 값이 무한히 많아 무한히 많은 계수가 필요한 것과 다르다.

그림

\(N = 9\), \(N_1 = 1\)인 구형파(회색 가로 막대)의 부분합이다. \(a_3 = 0\)이라 \(M = 3\)은 \(M = 2\)와 같고, 항이 9개가 되는 \(M = 4\)에서 원래 수열과 정확히 같아진다1.

스스로 설명해 보기

1. 등비수열 합에서 분자 \(1 - a^N\)이 0인 이유는?

\(a = e^{jk(2\pi/N)}\)이므로 \(a^N = e^{jk2\pi} = 1\)이다. 분모는 \(k\)가 \(N\)의 배수가 아니면 \(a \ne 1\)이라 0이 아니다.

2. 왜 이산 시간에서는 계수가 \(N\)개면 충분한가?

고조파가 \(N\)개만 서로 다르고(\(\phi_{k+N} = \phi_k\)), 한 주기에 수열 값도 \(N\)개다. 미지수 \(N\)개, 식 \(N\)개인 연립방정식이라 정확히 풀린다.

핵심 아이디어는?

연속 시간의 직교 기저 분해와 같지만, 기저가 유한 개라 행렬 하나(DFT 행렬)의 곱으로 정확히 끝난다.

예제

예제 3.10 \(x[n] = \sin\omega_0n\)

  • \(\omega_0 = \frac{2\pi}{N}\)이면 오일러 관계로 \(x = \frac{1}{2j}e^{j(2\pi/N)n} - \frac{1}{2j}e^{-j(2\pi/N)n}\). 그래서 \(a_1 = \frac{1}{2j}\), \(a_{-1} = -\frac{1}{2j}\), 한 주기의 나머지는 0. 주기 \(N\)으로 반복되므로 \(a_{N+1} = \frac{1}{2j}\), \(a_{N-1} = -\frac{1}{2j}\)이다(\(N = 5\)이면 그림 3.13).
  • \(\omega_0 = \frac{2\pi M}{N}\)(\(M\)과 \(N\)은 서로소)이면 \(a_M = \frac{1}{2j}\), \(a_{-M} = -\frac{1}{2j}\). \(M = 3\), \(N = 5\)이면 \(a_{-3} = a_2\)다(그림 3.14).

예제 3.11 \(x[n] = 1 + \sin\frac{2\pi}{N}n + 3\cos\frac{2\pi}{N}n + \cos\left(\frac{4\pi}{N}n + \frac\pi2\right)\)

  • 모두 복소 지수로 풀어 같은 주파수끼리 모은다.
  • \(a_0 = 1\), \(a_1 = \frac32 - \frac12j\), \(a_{-1} = \frac32 + \frac12j\), \(a_2 = \frac12e^{j\pi/2} = \frac12j\), \(a_{-2} = -\frac12j\).
  • \(\vert a_1\vert = \frac{\sqrt{10}}{2}\), \(\angle a_1 = -\tan^{-1}\frac13 \approx -18.43°\). 실수 수열이라 \(a_{-k} = a_k^*\)다(그림 3.15).

예제 3.12 이산 구형파 한 주기에서 \(-N_1 \le n \le N_1\)이면 1

  1. 합 범위: \(a_k = \frac1N\sum_{n=-N_1}^{N_1}e^{-jk(2\pi/N)n}\)
  2. 0부터 세게 바꾸기: \(m = n + N_1\)로 두면 \(a_k = \frac1Ne^{jk(2\pi/N)N_1}\sum_{m=0}^{2N_1}e^{-jk(2\pi/N)m}\)
  3. 등비수열 합: \(= \frac1Ne^{jk(2\pi/N)N_1}\frac{1 - e^{-jk2\pi(2N_1+1)/N}}{1 - e^{-jk(2\pi/N)}}\)
  4. 분자·분모에서 반각 지수를 빼내 사인으로: \(a_k = \dfrac1N\dfrac{\sin[2\pi k(N_1 + \frac12)/N]}{\sin(\pi k/N)}\) (\(k \ne 0, \pm N, \dots\))
  5. \(k\)가 \(N\)의 배수: 모든 항이 1이라 \(a_k = \frac{2N_1+1}{N}\).

\(2N_1 + 1 = 5\), \(N = 10\)이면 \(a_0 = \frac12\), \(a_1 = \frac{1}{10}\cdot\frac{\sin(\pi/2)}{\sin(\pi/10)} \approx 0.3236\), \(a_2 = 0\), \(a_3 = \frac{1}{10}\cdot\frac{\sin(3\pi/2)}{\sin(3\pi/10)} \approx -0.1236\), \(a_4 = 0\)이다. \(N\)을 20, 40으로 키우면 \(Na_k\)가 같은 sinc 꼴 포락선을 더 촘촘히 찍는다(그림 3.17).

그림

\(N = 10\), \(2N_1 + 1 = 5\)인 구형파와 그 계수다. 계수도 10칸마다 똑같이 되풀이되므로 색칠한 한 주기만 알면 된다1.

검증: \(N = 4\) 예의 계수와 복원, 한 주기 합 공식, \(a_{k+N} = a_k\), 예제 3.10·3.11·3.12의 계수(5개 경우의 닫힌 꼴 포함), \(N = 9\) 구형파의 부분합이 \(M = 4\)에서 정확히 같아짐 확인 — 33_dt-fourier-series_verify.py

활용

  • 컴퓨터가 실제로 계산하는 푸리에 해석은 모두 이 유한합이다. 이산 푸리에 변환(DFT)은 계수에 \(N\)을 곱한 것과 같고, FFT로 \(O(N\log N)\)에 계산한다 → 이산 푸리에 변환과 FFT2
  • 흔한 실수: 연속 시간처럼 계수를 \(k = -\infty \dots \infty\)로 모두 다른 값이라 생각하는 것, 합 구간을 \(N\)개보다 많이 잡아 같은 항을 두 번 세는 것.

연결

자주 하는 오해

“이산 구형파의 푸리에 급수도 경계에서 깁스 현상이 생긴다.”

틀렸다. 연속 시간 사각파의 깁스 현상을 그대로 옮겨 생각해서 그럴듯하다. 이산 시간 급수는 항이 \(N\)개뿐인 유한합이라, 항을 모두 쓰면 원래 수열과 정확히 같다. 확인: 그림 3.18에서 \(N = 9\)일 때 \(M = 4\)(항 9개)의 부분합은 원래 구형파와 똑같다.

확인 문제

C1 이산 시간 푸리에 급수의 합성식과 분석식을 쓰라.

답: \(x[n] = \sum_{k=\langle N\rangle}a_ke^{jk(2\pi/N)n}\), \(a_k = \frac1N\sum_{n=\langle N\rangle}x[n]e^{-jk(2\pi/N)n}\).

C2 주기 2인 수열 \(x[0] = 3\), \(x[1] = 1\)의 푸리에 계수 \(a_0\), \(a_1\)을 구하라.

답: \(a_0 = \frac12(3 + 1) = 2\), \(a_1 = \frac12(3 + 1 \cdot e^{-j\pi}) = \frac12(3 - 1) = 1\).

C3 연속 시간 푸리에 급수와 이산 시간 푸리에 급수의 차이를 계수 개수와 수렴 관점에서 말하라.

답: 연속 시간은 계수가 무한히 많고(모두 다를 수 있음) 무한합이 수렴하는지(디리클레 조건, 깁스 현상)가 문제다. 이산 시간은 서로 다른 계수가 \(N\)개뿐이고(주기 \(N\)으로 반복) 유한합이라 수렴 문제가 없다.

C4 분석식 유도에서 \(\sum_ka_k\sum_ne^{j(k-r)(2\pi/N)n} = Na_r\)인 근거는?

답: 한 주기 합의 공식. \(k - r\)이 \(N\)의 배수일 때만 안쪽 합이 \(N\)이고 그 밖은 0이다. \(k\)와 \(r\)을 같은 \(N\)칸 범위에서 고르면 그런 \(k\)는 \(k = r\) 하나다.

  1. 33_dt-fourier-series_plot.py로 그렸고, 같은 코드로 다음을 확인했다: \(a_0 = \frac12\), \(a_1 \approx 0.3236\), \(a_3 \approx -0.1236\)과 닫힌 꼴, \(N = 9\) 구형파의 \(a_3 = 0\)과 \(M = 4\) 부분합의 일치. ↩ ↩2

  2. 계산은 검증 코드로 확인했다. ↩