REMI Lab강의 노트

Signals and Systems L07

7장 이산시간 시스템의 푸리에 해석

관측 시간과 주파수 간격

가까운 두 주파수를 DFT로 가르려면 샘플링 주파수와 샘플 수 가운데 무엇을 늘려야 할까?

샘플링 주파수 fsf_s로 NN개를 모으면 관측 시간은 Tobs=N/fsT_{\mathrm{obs}}=N/f_s이다. DFT 주파수 간격은

Δf=fsN=1Tobs\Delta f=\frac{f_s}{N}=\frac{1}{T_{\mathrm{obs}}}

이고, 보이는 주파수 범위는 −fs/2≤f<fs/2-f_s/2\le f<f_s/2이다.

  • fsf_s를 고정하고 NN을 늘리면 관측 시간이 길어져 Δf\Delta f가 작아진다. 가까운 주파수를 더 잘 구별한다.
  • 관측 시간을 고정하고 fsf_s를 키우면 NN이 같은 비율로 늘어 Δf\Delta f는 그대로이고, 볼 수 있는 최대 주파수 fs/2f_s/2만 커진다.

주파수 간격을 정하는 것은 샘플링 주파수가 아니라 관측 시간이다. 짧게 본 신호로는 주파수를 정밀하게 가르지 못하는데, 이것이 시간과 주파수 사이의 불확정성이다.

NN개만 남긴 기록은 원래 수열에 0≤n<N0\le n<N에서 1, 밖에서 0인 사각 윈도우(창 함수)를 곱한 것이다. 기록 밖을 0으로 두고 모든 Ω\Omega에서 계산한 변환, 곧 앞에서 X0(Ω)X_0(\Omega)라고 쓴 것을 유한 기록의 DTFT라고 한다.

복소 톤 x[n]=ejΩ0nx[n]=e^{j\Omega_0n} 하나로 이 곡선을 구한다. 등비수열의 합으로

X0(Ω)=∑n=0N−1e−j(Ω−Ω0)n=DN(Ω−Ω0),DN(Ω)=e−jΩ(N−1)/2 sin⁡(NΩ/2)sin⁡(Ω/2)X_0(\Omega)=\sum_{n=0}^{N-1}e^{-j(\Omega-\Omega_0)n}=D_N(\Omega-\Omega_0),\qquad D_N(\Omega)=e^{-j\Omega(N-1)/2}\,\frac{\sin(N\Omega/2)}{\sin(\Omega/2)}

이다(DN(0)=ND_N(0)=N). 끝없이 이어지는 수열이라면 Ω0\Omega_0 한 점에만 있을 톤이, 기록을 자르면 Dirichlet 핵 DND_N 모양으로 이웃 주파수까지 퍼진다. 이것을 스펙트럼 누설(spectral leakage)이라고 한다.

∣DN∣|D_N|의 메인로브 양쪽 첫 영점은 NΩ/2=±πN\Omega/2=\pm\pi, 곧 톤에서 ±fs/N\pm f_s/N 떨어진 곳이다. 그래서 영점 사이 폭(null-to-null)은 2fs/N=2/Tobs2f_s/N=2/T_{\mathrm{obs}}로 DFT 두 bin이다(N≥2N\ge2). DFT 점은 이 곡선의 값을 Δf=1/Tobs\Delta f=1/T_{\mathrm{obs}}마다 취한 것이다. 주파수 간격은 곡선에서 값을 취하는 간격일 뿐이고, 가까운 두 톤을 구별하는 능력인 주파수 분해능은 피크 폭이 정한다. 톤이 bin에 정확히 놓이면 다른 bin들은 모두 NΩ/2N\Omega/2가 π\pi의 0이 아닌 정수배인 핵의 영점에 놓여 값이 0이다.

예를 들어 20 Hz 복소 톤을 fs=615f_s=615 Hz로 N=35N=35개 모으면 관측 시간은 35/615≈56.935/615\approx56.9 ms이고 Δf=615/35≈17.57\Delta f=615/35\approx17.57 Hz이다. 20 Hz는 bin 1(17.57 Hz)과 bin 2(35.14 Hz) 사이에 있어서 에너지가 한 bin에 모이지 않고 이웃 bin으로 번진다. 가장 큰 값은 bin 1에 나온다. 크기를 최댓값으로 나누어 그리면 bin 사이에 놓인 톤도 피크가 1로 보이므로, bin에 정확히 놓였는지는 피크 높이로 판단할 수 없다.

합성 신호의 DFT 점과 유한 기록의 DTFT 곡선을 함께 그렸고, 처음 상태는 N = 35, fₛ = 615 Hz, 20 Hz 복소 톤이다. 그림에 Δf = 615/35 = 17.57 Hz, T_obs = 0.05691 s, 20 Hz에 가장 가까운 bin k = 1(17.57 Hz, +0.14 bin)이 표시된다.

해 보기

  1. N = 35, fₛ = 615 Hz에서 20 Hz 복소 톤을 잴 때 Δf와 값이 생기는 bin을 확인하라.
    관찰

    Δf = 17.57 Hz이다. 20 Hz 톤이 bin 1과 bin 2 사이에 있어 여러 bin에 값이 생긴다.

  2. fₛ = 100 Hz, N = 20에서 32.5 Hz 톤이 어느 bin 사이에 놓이는지, 몇 bin에 값이 생기는지 확인하라.
    관찰

    Δf = 5 Hz라 32.5 Hz는 bin 6(30 Hz)과 bin 7(35 Hz)의 한가운데이다. 20개 bin 모두에 값이 생긴다.

  3. 같은 톤을 N = 40으로 두 배 길게 재면 0이 아닌 bin이 몇 개인지 확인하라.
    관찰

    Δf = 2.5 Hz로 줄어 32.5 Hz가 bin 13에 정확히 놓인다. 0이 아닌 bin이 하나뿐이다.

예제 2: 선이 서는 bin 찾기

fs=100f_s=100 Hz, N=20N=20이면 Δf=5\Delta f=5 Hz이고 bin k=11…19k=11\ldots19는 음의 주파수 (k−20)⋅5(k-20)\cdot5 Hz, bin k=10k=10은 ±50\pm50 Hz이다. 진폭 1인 톤이 서는 bin은 다음과 같다.

  • 30 Hz 복소 톤은 k=6k=6 한 bin에 서고 ∣X[6]∣=20|X[6]|=20이다.
  • 30 Hz 코사인은 ±30\pm30 Hz이므로 k=6k=6과 k=20−6=14k=20-6=14에 서고 각각 ∣X∣=10|X|=10이다.
  • 70 Hz 복소 톤은 fs/2=50f_s/2=50 Hz를 넘으므로 70−100=−3070-100=-30 Hz로 aliasing되어 k=14k=14 한 bin에 선다.
  • 70 Hz 코사인은 ±70\pm70 Hz가 ∓30\mp30 Hz로 aliasing되어 k=6k=6과 k=14k=14에 선다. 30 Hz 코사인과 똑같아 DFT만으로는 구별하지 못한다.

제로 패딩과 긴 관측

기록 뒤에 제로 패딩해 DFT 길이를 늘리면 두 톤을 더 잘 가를 수 있을까?

관측을 늘리는 것과 제로 패딩(zero padding)은 다르다. 관측을 늘리면 DTFT 곡선 자체가 좁아지지만, 제로 패딩하면 같은 곡선 위에 점만 촘촘해진다. 8 Hz와 8.75 Hz 복소 톤을 fs=64f_s=64 Hz로 재는 예로 비교한다. N=32N=32개에 제로 패딩해 DFT 길이를 M=16NM=16N으로 늘리면(MM은 0을 붙인 뒤의 DFT 길이) 점 간격이 0.125 Hz로 줄지만 1/Tobs=21/T_{\mathrm{obs}}=2 Hz와 메인로브 폭 4 Hz는 그대로이고, 두 톤이 피크 하나로 보인다. 관측을 8배로 늘려 N=256N=256개를 모으면 Δf=0.25\Delta f=0.25 Hz, 메인로브 폭 0.5 Hz가 되어 피크가 둘로 갈린다. 아래 두 항목을 차례로 누르면 앞 그림이 두 기록을 그려, 같은 두 톤에서 점만 촘촘해지는 것과 곡선이 좁아지는 것을 비교할 수 있다.

해 보기

  1. N=32N=32에 0을 붙여 DFT 길이를 16N16N으로 늘리면 두 톤이 갈리는지 확인하라.
    관찰

    점이 0.125 Hz마다 촘촘해지지만 곡선의 메인로브 폭은 4 Hz 그대로라 8 Hz와 8.75 Hz가 피크 하나로 보인다.

  2. 0을 붙이지 않고 N=256N=256개를 8배 길게 모으면 어떻게 되는지 확인하라.
    관찰

    점 간격이 0.25 Hz, 메인로브 폭이 0.5 Hz로 좁아져 피크가 둘로 갈린다.