Nyquist Frequency란?
본 글의 내용은 전부 구글링 내용을 정리한 것으로 오류가 있을 수 있습니다.
오늘 Nyquist Frequency에 대해 알아볼 일이 있었는데, 궁금증이 처음 발단은 도대체 왜 Sampling Frequency $f_s$으로 추출한 신호에 대해 $[-\frac{f_s}{2},-\frac{f_s}{2}]$ 만큼의 주파수만 Fourier Transform을 진행하냐는 것이었다.
구글링을 해봤으나..
공돌이의 수학정리노트님의 유튜브 영상 외에는 도대체 이게 왜 이렇게 되는지 수학적으로 설명한 내용이 진짜 놀라울 정도로 아무것도 없었다. 그리고, 좀 이상한 내용을 일괄적으로 작성하기도 하더라. 아마 이론을 지나치게 단순화하고 실제와 혼용된 내용을 작성하다보니 글 내용이 이상해졌을 듯하다. (보통 DFT CFT를 언급조차 하지 않는 글이 그랬다.)
https://youtu.be/5wyYgy6LPyQ
Nyquist Frequency란?
위의 영상에 굉장히 잘 정리되어있긴 하지만, 내 방식으로 더 간단하게 이해해보겠다. 목표를 먼저 명확히 하고 넘어가자. 지금 우리가 하고 싶은 것은, 연속된 신호를 sampling해서 이산적인 데이터를 얻어낸 후에 이것을 다시 연속된 신호로 복원하는 것이 다. 앞으로 내가 설명할 내용에서 샘플링한 이산 데이터는 무한 개 있다고 가정한다.
이 때 Nyquist Freuquency란, 연속 신호의 최대 주파수 $f_B$에 대해 sampling rate를 어느 정도 이상으로 설정해야 하는지를 나타내는 지표이다. 결론부터 말하면 sampling rate $f_s$는 $2f_B$ 이상이어야 제대로 신호를 복원해낼 수 있다.
그 이유에 대한 간단한 설명
하나의 주파수를 표현하기 위해서는 최소 2개의 샘플이 필요하기 때문이다. 이는 아래 블로그에서 따온 굉장히 간결하지만 핵심을 담은 표현으로, 나이퀴스트 정리가 현실에 어떻게 적용되는지 흥미로운 예시를 제시하고 있기에 한번 읽어보고 오길 권한다.
https://funmi.tistory.com/3
위는 위키백과의 사진으로, anti-aliasing filter을 적용하기 전(왼쪽)과 후(오른쪽)을 나타낸다. 위 블로그에서 예시로 든 사진과 비슷한 사진이라 첨부했다.
조금 더 자세한 설명
Discrete Fourier Transform은 sample이 $x_1, x_2, \ldots x_T$로 sample의 개수가 $T$개, sampling period가 $T_s$일 때 주파 수 $T_s \cdot f=\frac{1}{T}, \frac{2}{T}, \ldots, \frac{T}{T}$에 대해 amplitude를 구한다. (물론, 경우에 따라, $\frac{1}{T}$의 정수배를 모두 고려하기도 한다. 다만 굳이 그렇게 할 필요가 없는데, 이는 바로 뒤에 후술한다.)
그런데 주파수 $T_s \cdot f= \frac{1+T}{T}$에 대해서는 어떨까? 주파수 $T_s \cdot f$가 1이 늘어난다고 한들 DFT의 수식을 관찰하거나 단위원을 그려보면 알겠지만 $\exp(2\pi i \frac{nk}{T})=\exp(2\pi i \frac{n(k+T)}{T})$이기에 ( $X_k$을 구할 때의 summation index를 $n$으로 했는데 그닥 중요하지 않은 사소한 디테일이다) $T_s \cdot f$를 $\frac{1}{T}$로 하든 $\frac{1+T}{T}$로 하든 똑같은 결과가 나온다.
다시 말해, DFT의 결과는 $T_s \cdot f$가 1 늘어날때마다 똑같은 결과가 반복되는 주기함수의 형태를 따른다. DFT의 결과는 convention에 따라 다르지만 $\frac{1}{T}, \frac{2}{T}, \ldots \frac{T}{T}$으로 두기도 하지만 $\frac{1}{T}, \frac{2}{T}, \ldots, \frac{T}{2T}, -\frac{1}{T}, -\frac{2}{T}, \ldots, -\frac{T}{2T}$에 대해 amplitude를 추출하기도 한다. 이들을 $T_s \cdot f$가 아닌 $f$에 대해 나타내면 구간 $[-\frac{f_S}{2}, \frac{f_S}{2}]$가 된다.
다른 말로 설명을 덧붙이자면, 이산 신호에서 다시 연속 신호를 복원하기 위해 DFT를 해도 그 결과가 주파수 구간 $[-\frac{f_S}{2}, \frac{f_S}{2}]$에 대한 것인지 $[\frac{f_S}{2}, \frac{3f_S}{2}]$에 대한 것인지 $[\frac{3f_S}{2}, \frac{5f_S}{2}]$에 대한 것인지 전혀 구분할 수 없다는 말이다. (더 정확히는 주파수 구간이 아니라 각각의 주파수에 대해 $f_s$ 주기로 구분이 불가능하다는 말이지만.. 뭐 넓게 보면 그게 그거니까..) 복원 가정에서 왜 이러한 모호성이 생기냐? 의문이 들 수 있는데, 당연히 sampling frequency라는 것이 존재하기 때문에 그렇다. 만약 sampling frequency라는 것 자체가 존재하지 않아 연속 신호를 이산 신호로 읽어올 필요도 없이 연속 신호 그대로 받아들일 수 있거나, sampling frequency가 충분히 크다면 이러한 제약(모호성)이 생기지 않았을 것이다. 왜 주기를 $[0, f_s]$가 아니라 $[-\frac{f_S}{2}, \frac{f_S}{2}]$로 해도 적어도 이론상으로는 문제가 없는지도 이러한 원리로 파악할 수 있다. (실제 구현상으로는 차이가 있다고 어디서 들은 것 같은데 확실하진 않다) 그야 $y=\sin{x}$를 $[0, 2\pi]$ 구간 대상으로 읽든 $[-\pi, \pi]$ 대상으로 읽든 차이가 없으니까.
sampling하기 전의 원래의 연속적인 신호를 Continuous Fourier Transform했을 때, 최대(양수쪽으로든 음수쪽으로든)의 주파수를 $f_B$라 하자. 그런데 만약 $f_B > \frac{f_s}{2}$면 $2f_B$ 길이의 함수를 $f_s$라는 짧은 주기의 주기함수로 나타낸다는 말 이고 이건 당연히 어불성설이다. 제대로 나타낼 수 없어 정보의 손실이 일어날 것이며 이를 그림으로 나타낸 건 위의 영상에서 22:45경을 참고하면 된다. 따라서 무조건 $f_B \le \frac{f_s}{2}$여야 한다. 또는 $f_s \ge 2f_B$라고도 하는데, 이는 원래 연속 신호의 최대 주파수의 2배 이상으로 sampling rate가 설정되어야 한다는 뜻이다. sampling rate가 잦을수록 데이터는 정보 손실 없이 나타날 것이므로 이는 직관에도 잘 들어맞는다. 이를 Nyquist Frequency Theorem이라 한다.[1]
Anti-Aliasing
또는, $f_s$가 $2f_B$보다 작아 정보의 손실이 일어날 때 이를 Aliasing
이라 부른다. 이것을 방지하는 일련의 기법을 Anti-Aliasing이라 칭하는 듯하다.
또한 Nyquist Frequency는 anti-aliasing과도 연관이 있는데, 주파수 구간 $[-\frac{f_S}{2}, \frac{f_S}{2}]$ 바깥, 아니면 단 순히 고주파수의 결과를 짤라먹어버림으로써 accurately sampled
되지 않은 데이터를 없애버리는 것이다. 이론적으로 DFT 결과는 주기함수여야 하고 이러한 작업을 수행해줄 이유도 없는데 실제로는 이게 왜 필요하느냐? 하면.. 일단, 샘플링한 이산 데이터가 무한 개 있다는 가정이 현실에는 들어맞지 않는다. 또 신호의 주파수가 bounded되어 있다는 가정도 문제가 될 수 있다. (sampling rate/2보다 높은 주파수의 신호가 살아있으면 그 신호를 제대로 측정하지 못할 것이다.) 또한 뭐 여러 가지 이유로 이론적 으로 예측한 신호와 실제 측정되는 신호 사이에 오차도 있을 것이다. 이건 좀 다른 종류의 이유지만..
공돌이의 수학정리노트님 영상에 있었지만 내 글에서 생략한 내용으로는, 이산 신호에 impulse train $\sum_n \delta(t-nT_s)$을 곱한 후에 Continuous Fourier Transform하면, 이산 신호에 DFT을 수행한 것과 똑같은 결과가 나온다는 게 있겠다. 이는 CFT와 DFT의 결과를 이어주는 흥미로운 결과기는 하지만 지금 내가 주목하는 것과 큰 연관이 있는 것 같지는 않아 생략하였다.
Nyquist-Shannon Sampling Theorem이라 부르기도 하는 듯하다. ↩︎