11장. 표본화: 연속에서 이산으로

푸리에 해석 · 푸리에 변환

심화 · 약 35분 · 연습문제 5 · 그림 6

요약

표본화된 신호의 스펙트럼, 나이퀴스트–섀넌 표본화 정리, 에일리어싱, DTFT, 네 가지 푸리에 변환, DFT로 스펙트럼을 볼 때의 누설과 창함수

연속적인 소리를 디지털로 녹음하려면 일정한 간격으로 값을 재야 합니다(표본화). 얼마나 자주 재야 원래 소리를 완전히 되살릴 수 있을까요? 이 장의 답이 나이퀴스트–섀넌 표본화 정리이고, 너무 드물게 재면 생기는 왜곡이 에일리어싱입니다.

컴퓨터는 연속 함수를 다루지 못합니다. 일정 간격으로 찍은 표본 x(nTs)x(nT_s)만 저장합니다. 이 장의 질문은 둘입니다. 표본만으로 원래 신호를 복원할 수 있을까요? 그리고 컴퓨터가 계산하는 DFT(4장)는 연속 신호의 푸리에 변환(6장)과 어떤 관계일까요?

11.1 표본화의 모형과 스펙트럼

표본화 간격 TsT_s (초), 표본화 주파수 fs=1/Tsf_s = 1/T_s (Hz), ωs=2π/Ts\omega_s = 2\pi/T_s (rad/s)로 둡니다. 표본화를 임펄스열(9장 9.5절)과의 곱으로 나타냅니다.

xs(t)=x(t) pTs(t)=∑n=−∞∞x(nTs) δ(t−nTs)x_s(t) = x(t)\, p_{T_s}(t) = \sum_{n=-\infty}^{\infty}x(nT_s)\, \delta(t - nT_s)

xsx_s는 표본값 x(nTs)x(nT_s)만으로 정해지므로 표본열과 같은 정보를 담고 있습니다.

정리 11.1 (표본화된 신호의 스펙트럼).

Xs(ω)=1Ts∑k=−∞∞X(ω−kωs)X_s(\omega) = \frac{1}{T_s}\sum_{k=-\infty}^{\infty}X(\omega - k\omega_s)

시간 영역에서 간격 TsT_s로 표본화하면 스펙트럼이 간격 ωs=2π/Ts\omega_s = 2\pi/T_s로 반복 복제됩니다.

증명. 9장 정리 9.10에서 pTs(t)=1Ts∑kejkωstp_{T_s}(t) = \frac{1}{T_s}\sum_ke^{jk\omega_st}이므로 xs(t)=1Ts∑kx(t)ejkωstx_s(t) = \frac{1}{T_s}\sum_kx(t)e^{jk\omega_st}입니다. 주파수 이동 성질로 각 항의 변환은 X(ω−kωs)X(\omega - k\omega_s)입니다. ■\blacksquare

11.2 표본화 정리

정의 11.2. ∣ω∣≥W|\omega| \ge W에서 X(ω)=0X(\omega) = 0이면 xx는 WW로 대역제한(band-limited)되었다고 합니다. 주파수로는 B=W/2πB = W/2\pi Hz다.

정리 11.3 (나이퀴스트–섀넌 표본화 정리). xx가 BB Hz로 대역제한되어 있고 fs>2Bf_s > 2B이면, xx는 표본 x(nTs)x(nT_s)로부터 완전히 복원됩니다.

x(t)=∑n=−∞∞x(nTs)sinc⁡(t−nTsTs)x(t) = \sum_{n=-\infty}^{\infty}x(nT_s)\operatorname{sinc}\left(\frac{t - nT_s}{T_s}\right)

증명. ωs>2W\omega_s > 2W이면 Xs(ω)X_s(\omega)의 복제본들이 겹치지 않습니다(그림 11.1 가운데). 구간 ∣ω∣<ωs/2|\omega| < \omega_s/2에는 k=0k = 0 복제본 1TsX(ω)\frac{1}{T_s}X(\omega)만 있으므로

X(ω)=Hr(ω) Xs(ω),Hr(ω)=Tsrect⁡(ωωs)X(\omega) = H_r(\omega)\, X_s(\omega), \qquad H_r(\omega) = T_s\operatorname{rect}\left(\frac{\omega}{\omega_s}\right)

입니다. 이득 TsT_s, 차단 주파수 ωs/2\omega_s/2인 이상적 저역통과 필터로 가운데 복제본만 잘라내는 것입니다. 그 임펄스 응답은 8장 예제 8.8에서 hr(t)=Tssin⁡(ωst/2)πt=sin⁡(πt/Ts)πt/Ts=sinc⁡(t/Ts)h_r(t) = T_s\frac{\sin(\omega_st/2)}{\pi t} = \frac{\sin(\pi t/T_s)}{\pi t/T_s} = \operatorname{sinc}(t/T_s)입니다. 합성곱 정리로

x(t)=(xs∗hr)(t)=∑nx(nTs) δ(t−nTs)∗hr(t)=∑nx(nTs) hr(t−nTs)x(t) = (x_s * h_r)(t) = \sum_nx(nT_s)\, \delta(t - nT_s) * h_r(t) = \sum_nx(nT_s)\, h_r(t - nT_s)

입니다. ■\blacksquare

세 줄의 스펙트럼 그림. 위는 |ω| < W에 한정된 삼각형 모양 스펙트럼. 가운데는 ωs > 2W일 때 같은 삼각형이 ωs 간격으로 복제되어 서로 떨어져 있습니다. 아래는 ωs < 2W일 때 복제본이 겹쳐 더해진 들쭉날쭉한 굵은 선입니다.

그림 11.1. 위: 대역 ∣ω∣<W|\omega| < W에 한정된 스펙트럼. 가운데: ωs>2W\omega_s > 2W이면 복제본(파선)이 겹치지 않습니다. 아래: ωs<2W\omega_s < 2W이면 복제본이 겹쳐 더해지고(굵은 실선) 원래 모양을 알아볼 수 없습니다. 세로 파선은 ±ωs/2\pm\omega_s/2.

표본점마다 그 높이의 sinc 곡선(회색)이 서 있고, 이들을 모두 더한 굵은 곡선이 모든 표본점을 지납니다.

그림 11.2. sinc 보간. 각 표본에 그 높이의 sinc(회색)를 하나씩 세우고 모두 더하면 원래 신호(굵은 선)가 됩니다. 각 sinc는 다른 표본 위치에서 0이므로 합은 표본점을 정확히 지납니다.

  • 2B2B를 나이퀴스트율(Nyquist rate), fs/2f_s/2를 나이퀴스트 주파수(Nyquist frequency)라 합니다. 가장 높은 주파수 성분의 한 주기에 표본이 2개보다 많아야 합니다.
  • 사람의 가청 한계가 약 20 kHz이므로 CD는 fs=44.1f_s = 44.1 kHz, 전화 음성은 약 3.4 kHz까지이므로 fs=8f_s = 8 kHz를 씁니다.
  • 연속 함수는 무한히 많은 수로 이루어져 있는데 띄엄띄엄한 표본으로 복원된다는 것이 놀라워 보이지만, 대역제한이라는 조건이 그만큼 강합니다. 대역제한된 함수는 표본 사이에서 제멋대로 움직일 수 없습니다.

참고 11.4 (선형대수로 보면). W=ωs/2W = \omega_s/2로 대역제한된 함수 전체는 L2(R)L^2(\mathbb{R})의 부분공간이고, ϕn(t)=sinc⁡t−nTsTs\phi_n(t) = \operatorname{sinc}\frac{t - nT_s}{T_s}는 그 직교기저입니다. 파세발 등식으로 ⟨ϕn,ϕm⟩=12π∫−ωs/2ωs/2Ts2e−jω(n−m)Ts dω=Tsδnm\langle\phi_n, \phi_m\rangle = \frac{1}{2\pi}\int_{-\omega_s/2}^{\omega_s/2}T_s^2e^{-j\omega(n - m)T_s}\, d\omega = T_s\delta_{nm}임을 확인할 수 있습니다. 표본화 정리는 이 기저에 대한 전개이고, 표본값이 곧 좌표입니다. 3장 정리 3.17의 또 다른 예입니다.

11.3 에일리어싱

fs≤2Bf_s \le 2B이면 복제본이 겹칩니다. 겹친 부분에서는 서로 다른 주파수 성분이 더해져 구별할 수 없게 됩니다. 이 현상을 에일리어싱(aliasing)이라 합니다. 시간 영역에서 직접 볼 수 있습니다. ff와 f+kfsf + kf_s인 두 사인파는 표본점에서 값이 같습니다.

cos⁡(2π(f+kfs)nTs)=cos⁡(2πfnTs+2πkn)=cos⁡(2πfnTs)\cos\left(2\pi(f + kf_s)nT_s\right) = \cos(2\pi fnT_s + 2\pi kn) = \cos(2\pi fnT_s)

표본화 주파수 fsf_s로 표본화하면 주파수 ff인 사인파는 [0,fs/2][0, f_s/2] 안의 주파수 fa=∣f−fs⋅round⁡(f/fs)∣f_a = |f - f_s \cdot \operatorname{round}(f/f_s)|인 사인파와 구별되지 않습니다.

예제 11.5. fs=8f_s = 8 Hz일 때 7 Hz 사인파는 ∣7−8∣=1|7 - 8| = 1 Hz로 보입니다(그림 11.3). fs=44.1f_s = 44.1 kHz로 30 kHz 음을 표본화하면 44.1−30=14.144.1 - 30 = 14.1 kHz의 가짜 음이 생깁니다.

0초에서 1초까지 7 Hz 코사인(회색)과 1 Hz 코사인(파선)을 겹쳐 그렸습니다. 8 Hz로 찍은 표본점 9개가 두 곡선 위에 동시에 놓입니다.

그림 11.3. 에일리어싱. 7 Hz와 1 Hz의 코사인은 8 Hz 표본점에서 값이 완전히 같습니다.

신호 주파수와 표본화 주파수를 바꾸면 표본점이 보여 주는 주파수가 바뀝니다

이 위젯은 JavaScript가 필요합니다

영화에서 바퀴가 거꾸로 도는 것처럼 보이는 것이 같은 현상입니다(초당 24장의 표본화). 한번 섞인 성분은 표본만으로는 분리할 수 없습니다. 그래서 표본화 전에 아날로그 저역통과 필터로 fs/2f_s/2 이상의 성분을 없앱니다. 이 필터를 안티에일리어싱 필터라 합니다. 모든 A/D 변환기 앞에 있습니다.

11.4 이산시간 푸리에 변환 (DTFT)

표본열 x[n]=x(nTs)x[n] = x(nT_s)만 남기고 TsT_s를 잊으면 수열의 변환이 됩니다. xs(t)=∑nx[n]δ(t−nTs)x_s(t) = \sum_nx[n]\delta(t - nT_s)를 항별로 변환하면 Xs(ω)=∑nx[n]e−jωnTsX_s(\omega) = \sum_nx[n]e^{-j\omega nT_s}입니다. 정규화 각주파수 Ω=ωTs\Omega = \omega T_s (rad/표본)를 도입합니다.

정의 11.6 (DTFT).

Xd(Ω)=∑n=−∞∞x[n] e−jΩn,x[n]=12π∫−ππXd(Ω) ejΩn dΩX_d(\Omega) = \sum_{n=-\infty}^{\infty}x[n]\, e^{-j\Omega n}, \qquad x[n] = \frac{1}{2\pi}\int_{-\pi}^{\pi}X_d(\Omega)\, e^{j\Omega n}\, d\Omega
  • Xd(Ω+2π)=Xd(Ω)X_d(\Omega + 2\pi) = X_d(\Omega)입니다. e−j2πn=1e^{-j2\pi n} = 1이기 때문입니다. 이산 신호의 스펙트럼은 주기 2π2\pi의 주기함수입니다. Ω=π\Omega = \pi가 나이퀴스트 주파수 fs/2f_s/2에 해당하는 가장 높은 주파수입니다.
  • 정의식은 주기함수 Xd(Ω)X_d(\Omega)의 푸리에 급수이고 x[n]x[n]이 그 계수입니다. 역변환식은 계수 공식입니다. 5장에서 시간과 주파수의 역할을 바꾼 것이므로 새로 증명할 것이 없습니다.
  • 연속 신호의 변환과의 관계는 정리 11.1 그대로입니다: Xd(ωTs)=Xs(ω)=1Ts∑kX(ω−kωs)X_d(\omega T_s) = X_s(\omega) = \frac{1}{T_s}\sum_kX(\omega - k\omega_s). 에일리어싱이 없으면 ∣ω∣<ωs/2|\omega| < \omega_s/2에서 X(ω)=TsXd(ωTs)X(\omega) = T_sX_d(\omega T_s)입니다.

ωs=2π/Ts\omega_s = 2\pi/T_s로 반복 복제된 스펙트럼을 Ω=ωTs\Omega = \omega T_s축에서 보면 주기가 2π2\pi가 됩니다.

예제 11.7. ∣a∣<1|a| < 1일 때 x[n]=anu[n]x[n] = a^nu[n]의 DTFT는 등비급수로 Xd(Ω)=∑n=0∞(ae−jΩ)n=11−ae−jΩX_d(\Omega) = \sum_{n=0}^\infty(ae^{-j\Omega})^n = \frac{1}{1 - ae^{-j\Omega}}입니다. 연속의 e−atu(t)↔1a+jωe^{-at}u(t) \leftrightarrow \frac{1}{a + j\omega}에 해당합니다.

예제 11.8 (사각 창). w[n]=1w[n] = 1 (0≤n≤N−10 \le n \le N - 1), 그 밖에서 0이라 합시다. 등비수열의 합과 디리클레 핵의 계산을 그대로 쓰면

W(Ω)=∑n=0N−1e−jΩn=1−e−jΩN1−e−jΩ=e−jΩ(N−1)/2sin⁡(NΩ/2)sin⁡(Ω/2)W(\Omega) = \sum_{n=0}^{N-1}e^{-j\Omega n} = \frac{1 - e^{-j\Omega N}}{1 - e^{-j\Omega}} = e^{-j\Omega(N-1)/2}\frac{\sin(N\Omega/2)}{\sin(\Omega/2)}

입니다. Ω=0\Omega = 0에서 높이 NN, 영점은 Ω=2πk/N\Omega = 2\pi k/N입니다. 연속의 rect ↔ sinc에 해당하는 “주기적 sinc”입니다.

11.5 네 가지 푸리에 변환

지금까지 네 개의 변환이 나왔습니다. 하나의 원리로 정리됩니다.

한 영역에서 주기적 ⟺ 다른 영역에서 이산적. 표본화 ↔ 주기화(푸아송 합 공식).

주파수: 연속 (시간: 비주기) 주파수: 이산 (시간: 주기)
시간: 연속 (주파수: 비주기) 푸리에 변환 (FT) 푸리에 급수 (FS)
시간: 이산 (주파수: 주기) 이산시간 푸리에 변환 (DTFT) 이산 푸리에 변환 (DFT)

FT에서 출발해 시간을 표본화하면 스펙트럼이 주기화되어 DTFT가 되고, 시간을 주기화하면 스펙트럼이 표본화되어 FS가 됩니다. 둘 다 하면 양쪽 모두 이산적이고 주기적인 DFT다. DFT만이 유한 개의 수를 유한 개의 수로 보내므로 컴퓨터가 계산할 수 있는 것은 DFT뿐입니다.

11.6 DFT로 스펙트럼을 볼 때 일어나는 일

실제로는 유한한 길이 NN개의 표본 x[0],…,x[N−1]x[0], \ldots, x[N - 1]만 가지고 DFT를 계산합니다. 이것이 원래 신호의 스펙트럼과 어떻게 다른지 단계별로 봅니다.

11.6.1 DTFT의 표본으로서의 DFT

길이 NN인 신호의 DTFT와 DFT의 정의를 비교하면

X[k]=Xd(2πkN)X[k] = X_d\left(\frac{2\pi k}{N}\right)

입니다. DFT는 연속 곡선 Xd(Ω)X_d(\Omega)를 간격 2π/N2\pi/N으로 읽은 것입니다. Ω=ωTs=2πf/fs\Omega = \omega T_s = 2\pi f/f_s이므로 빈(bin) kk의 실제 주파수는

fk=kNfs  (0≤k<N/2),fk=k−NNfs  (N/2≤k<N),Δf=fsN=1NTsf_k = \frac{k}{N}f_s\ \ (0 \le k < N/2), \qquad f_k = \frac{k - N}{N}f_s\ \ (N/2 \le k < N), \qquad \Delta f = \frac{f_s}{N} = \frac{1}{NT_s}

입니다. 빈 간격 Δf\Delta f는 관측 시간 NTsNT_s의 역수입니다. 1 Hz 간격으로 보려면 1초를 관측해야 합니다. 표본화 주파수를 올려도 관측 시간이 같으면 빈 간격은 그대로이고 볼 수 있는 최고 주파수 fs/2f_s/2만 올라갑니다.

11.6.2 창과 스펙트럼 누설

무한히 긴 신호 x[n]x[n]에서 NN개만 잘라내는 것은 사각 창 w[n]w[n]을 곱하는 것입니다. 곱의 변환은 합성곱이므로(8장 정리 8.17의 이산판)

F{x[n]w[n]}=12π∫−ππXd(θ) W(Ω−θ) dθ\mathcal{F}\{x[n]w[n]\} = \frac{1}{2\pi}\int_{-\pi}^{\pi}X_d(\theta)\, W(\Omega - \theta)\, d\theta

입니다. 참 스펙트럼이 창의 스펙트럼 WW(예제 11.8)로 흐려집니다. 사인파 ejΩ0ne^{j\Omega_0n}의 참 스펙트럼은 Ω0\Omega_0의 임펄스 하나지만, 잘라내면 W(Ω−Ω0)W(\Omega - \Omega_0), 즉 Ω0\Omega_0에 중심을 둔 주기적 sinc가 됩니다. 그것을 2πk/N2\pi k/N에서 읽은 것이 DFT다.

  • Ω0=2πk0/N\Omega_0 = 2\pi k_0/N (관측 구간에 정확히 정수 k0k_0주기): 표본점이 k=k0k = k_0에서는 봉우리, 다른 kk에서는 정확히 WW의 영점에 놓입니다. X[k]X[k]는 한 빈에만 값이 있습니다. 4장 예제 4.7의 상황입니다.
  • 정수 주기가 아니면: 표본점이 영점을 비껴가 모든 빈에 값이 생깁니다. 한 주파수의 에너지가 모든 빈으로 새어 나가는 이 현상이 스펙트럼 누설(spectral leakage)입니다(그림 11.4).

DFT가 신호를 주기 NN으로 반복된다고 취급하기 때문이라고 볼 수도 있습니다(4장 4.3절). 정수 주기가 아니면 이어 붙인 경계에 불연속이 생기고, 불연속은 1/k1/k로 느리게 줄어드는 넓은 스펙트럼을 만듭니다.

N = 64인 DFT의 크기를 데시벨로 그린 세 그림. 정확히 8주기인 사인파는 k = 8 한 칸에만 0 dB가 있고 나머지는 −100 dB다. 8.5주기이면 모든 칸이 −30 dB 이상으로 채워집니다. 한 창을 곱하면 먼 칸으로 갈수록 크게 떨어집니다.

그림 11.4. N=64N = 64인 DFT의 크기(dB). 왼쪽: 정확히 8주기인 사인파는 한 빈에만 나타납니다. 가운데: 8.5주기이면 모든 빈으로 누설됩니다. 오른쪽: 한 창을 곱하면 먼 빈으로의 누설이 크게 줍니다.

11.6.3 창함수

누설을 줄이려면 양 끝이 부드럽게 0으로 가는 창을 곱합니다. 끝의 불연속을 없애면 스펙트럼의 꼬리가 빨리 줄어듭니다(매끄러움 ↔ 감쇠).

한(Hann) 창:  w[n]=12−12cos⁡2πnN,해밍 창:  w[n]=0.54−0.46cos⁡2πnN\text{한(Hann) 창:}\ \ w[n] = \frac{1}{2} - \frac{1}{2}\cos\frac{2\pi n}{N}, \qquad \text{해밍 창:}\ \ w[n] = 0.54 - 0.46\cos\frac{2\pi n}{N}
창 주엽 폭 (빈) 최대 부엽 높이 부엽 감쇠
사각 2 −13.3 dB 느림 (1/k1/k)
한 4 −31.5 dB 빠름 (1/k31/k^3)
해밍 4 −42.7 dB 느림 (1/k1/k)

왼쪽은 길이 64인 사각, 한, 해밍 창의 모양입니다. 오른쪽은 그 스펙트럼의 크기를 데시벨로 그린 것으로, 사각 창은 주엽이 좁고 부엽이 높으며, 한 창과 해밍 창은 주엽이 넓고 부엽이 낮습니다.

그림 11.5. 세 가지 창과 그 스펙트럼의 크기. 부엽이 낮은 창은 주엽이 넓습니다.

공짜는 없습니다. 부엽을 낮추면 주엽이 넓어집니다. 주엽 폭은 가까이 붙은 두 주파수를 구별하는 능력(해상도(resolution))을, 부엽 높이는 큰 성분 옆의 작은 성분을 찾아내는 능력(동적 범위)을 정합니다. 사각 창은 해상도가 가장 좋고 누설이 가장 나쁩니다.

11.6.4 영 채우기

길이 NN인 신호 뒤에 0을 붙여 길이 M>NM > N으로 만든 뒤 DFT를 하면 같은 곡선 Xd(Ω)X_d(\Omega)를 더 촘촘한 간격 2π/M2\pi/M으로 읽게 됩니다. 그래프가 매끄러워지고 봉우리의 위치를 더 정밀하게 읽을 수 있습니다. 그러나 곡선 자체(창에 의해 흐려진 스펙트럼)는 바뀌지 않으므로 가까운 두 주파수를 분리하는 능력은 늘지 않습니다. 해상도를 올리는 방법은 더 오래 관측하는 것뿐입니다.

11.6.5 FFT로 연속 푸리에 변환을 근사하는 절차

x(t)x(t)를 tn=t0+nTst_n = t_0 + nT_s (n=0,…,N−1n = 0, \ldots, N - 1)에서 표본화했다고 합시다. 적분을 리만 합으로 바꾸면

X(ωk)=∫x(t)e−jωkt dt≈∑n=0N−1x(tn)e−jωk(t0+nTs)Ts=Tse−jωkt0X[k],ωk=2πfkX(\omega_k) = \int x(t)e^{-j\omega_kt}\, dt \approx \sum_{n=0}^{N-1}x(t_n)e^{-j\omega_k(t_0 + nT_s)}T_s = T_se^{-j\omega_kt_0}X[k], \qquad \omega_k = 2\pi f_k

입니다.

실전 요약

  1. fsf_s를 신호 최고 주파수의 2배보다 넉넉히 크게 잡습니다(에일리어싱 방지).
  2. 관측 시간 NTsNT_s를 원하는 주파수 간격의 역수보다 길게 잡습니다.
  3. 필요하면 창을 곱합니다.
  4. FFT를 계산합니다. 빈 kk의 주파수는 fkf_k(위 식), N/2N/2 이상은 음의 주파수입니다.
  5. 연속 변환의 근사값은 Tse−jωkt0X[k]T_se^{-j\omega_kt_0}X[k]입니다. 사인파의 진폭을 읽으려면 2∣X[k]∣/N2|X[k]|/N입니다(창을 썼으면 NN 대신 ∑nw[n]\sum_nw[n]).

예제 11.9 (NumPy로 확인). 가우스 함수 e−t2/2e^{-t^2/2}의 변환 2πe−ω2/2\sqrt{2\pi}e^{-\omega^2/2}를 FFT로 구합니다.

import numpy as np
Ts, N = 0.05, 1024
t = (np.arange(N) - N//2) * Ts            # t0 = -N/2 * Ts
x = np.exp(-t**2 / 2)
w = 2*np.pi*np.fft.fftfreq(N, d=Ts)       # omega_k, negative freqs in 2nd half
X = Ts * np.exp(-1j*w*t[0]) * np.fft.fft(x)
err = np.max(np.abs(X - np.sqrt(2*np.pi)*np.exp(-w**2/2)))
print(err)                                # about 1e-15

fftfreq가 위의 fkf_k를 돌려줍니다. 그래프를 그릴 때는 np.fft.fftshift로 음의 주파수를 앞으로 옮깁니다. 가우스 함수는 시간과 주파수 양쪽에서 빨리 줄어들어 잘림과 에일리어싱이 둘 다 무시할 만하므로 오차가 반올림 수준입니다.

쓰이는 곳. CD의 44.1 kHz, 카메라의 무아레 무늬, 영상에서 바퀴가 거꾸로 도는 현상이 이 장의 내용입니다. 신경망의 다운샘플링(풀링, 스트라이드)이 에일리어싱을 일으킨다는 연구도 이 정리를 씁니다.

연습문제

문제 1 · 확인 문제

11.1. 100 Hz, 300 Hz, 700 Hz 사인파의 합을 fs=1000f_s = 1000 Hz로 표본화하면 스펙트럼에 어떤 주파수가 보일까요? 에일리어싱 없이 표본화하려면 fsf_s는 얼마보다 커야 할까요?

값 답 (Hz)
700 Hz 성분이 보이는 주파수 [?]
에일리어싱이 없으려면 fsf_s가 넘어야 할 값 [?]
힌트 1

나이퀴스트 주파수는 500 Hz다. 700 Hz는 ∣700−1000∣|700 - 1000|으로 접힙니다.

정답
300
1400
풀이

나이퀴스트 주파수는 500 Hz다. 700 Hz는 ∣700−1000∣=300|700 - 1000| = 300 Hz로 접혀 실제 300 Hz 성분과 겹칩니다. 보이는 것은 100 Hz와 300 Hz뿐이고 300 Hz의 크기는 두 성분의 위상에 따라 달라집니다. fs>1400f_s > 1400 Hz가 필요합니다.

문제 2 · 확인 문제

11.2. fs=48f_s = 48 kHz, N=4096N = 4096인 FFT의 빈 간격과 관측 시간은? 440 Hz와 441 Hz를 구별하려면 빈 간격이 1 Hz보다 작아야 합니다. 그러려면 최소 몇 초를 관측해야 할까요? 소수 둘째 자리까지 적습니다.

값 답
빈 간격 (Hz) [?]
관측 시간 (ms) [?]
최소 관측 시간 (s) [?]
힌트 1

Δf=fs/N\Delta f = f_s/N, 관측 시간은 N/fsN/f_s입니다.

정답
11.72
85.33
1
풀이

Δf=48000/4096=11.72\Delta f = 48000/4096 = 11.72 Hz, 관측 시간 4096/48000=85.334096/48000 = 85.33 ms다. 1000/11.72=85.331000/11.72 = 85.33으로 정수가 아니므로 1 kHz 사인파는 누설이 생깁니다. 1 Hz 차이를 구별하려면 빈 간격이 1 Hz보다 작아야 하므로 최소 1초, 한 창(주엽 4빈)을 쓰면 2초 이상이 필요합니다.

문제 3 · 확인 문제

11.3. x[n]x[n]이 n=0,1,2n = 0, 1, 2에서 1,2,11, 2, 1이고 나머지는 0입니다. DTFT를 구하고 크기를 말합니다.

값 답
∣Xd(0)∣\lvert X_d(0) \rvert [?]
∣Xd(π)∣\lvert X_d(\pi) \rvert [?]
∣Xd(π/2)∣\lvert X_d(\pi/2) \rvert [?]
힌트 1

Xd(Ω)=1+2e−jΩ+e−j2Ω=e−jΩ(ejΩ+2+e−jΩ)X_d(\Omega) = 1 + 2e^{-j\Omega} + e^{-j2\Omega} = e^{-j\Omega}(e^{j\Omega} + 2 + e^{-j\Omega})입니다.

정답
4
0
2
풀이

Xd(Ω)=1+2e−jΩ+e−j2Ω=e−jΩ(2+2cos⁡Ω)X_d(\Omega) = 1 + 2e^{-j\Omega} + e^{-j2\Omega} = e^{-j\Omega}(2 + 2\cos\Omega)입니다. 크기 2+2cos⁡Ω=4cos⁡2Ω22 + 2\cos\Omega = 4\cos^2\frac{\Omega}{2}는 Ω=0\Omega = 0에서 4, Ω=π/2\Omega = \pi/2에서 2, Ω=π\Omega = \pi에서 0인 저역통과입니다. 위상 −Ω-\Omega는 한 표본 지연의 선형 위상입니다.

문제 4 · 확인 문제

fs=44.1f_s = 44.1 kHz로 30 kHz 음을 표본화하면 몇 kHz의 가짜 음이 생길까요?

정답
14.1
풀이

∣30−44.1∣=14.1|30 - 44.1| = 14.1 kHz다.

문제 5 · 확인 문제

가까이 붙은 두 주파수를 구별하는 능력(해상도)을 높이는 방법은?

  1. 영 채우기로 DFT 길이를 늘립니다
  2. 관측 시간을 늘립니다
  3. 해밍 창을 곱합니다
  4. 표본화 주파수만 올립니다
정답
2
풀이

빈 간격은 관측 시간의 역수입니다. 영 채우기는 같은 곡선을 촘촘히 읽을 뿐이고, 창은 주엽을 넓혀 해상도를 오히려 낮춥니다. 관측 시간이 같으면 표본화 주파수를 올려도 빈 간격은 그대로입니다.