Home » Post » Math » 앨리어싱 (Aliasing) 현상에 대해 쉽게 알아보자

앨리어싱 (Aliasing) 현상에 대해 쉽게 알아보자

오늘은 오랜만에 신호 처리 관련 포스팅이다.

목차

  1. 컨볼루션(Convolution) 정의를 쉽게 이해해보자
  2. 앨리어싱 (Aliasing) 현상에 대해 쉽게 알아보자(현재 포스팅)
  3. 푸리에 변환(Fourier Transform)에 대해 쉽게 알아보자
  4. FIR(Finite Impulse Response) Filter에 대해 알아보자
  5. FIR(Finite Impulse Response) Filter를 설계 해보자 – 1편
  6. FIR(Finite Impulse Response) Filter를 설계 해보자 – 2편 샘플링(Sampling)

이번에는 시간 관점에서 한번 찍먹해보고, 주파수 관점에선 한번 찍먹해보겠다.
앨리어싱 현상이란 대충 설명하면 샘플링이 그지같이 되어서 각기 다른 신호를 구별해내지 못하는 현상을 의미한다. a를 b로 오인할 수 있다는건데 이게 무슨 소린가? 그냥 아래에 있는 그림을 보면 알 수 있다.

앨리어싱 현상 찍먹해보기

위에서 보는 것처럼 실제 주파수는 디게 높은데, 샘플링을 느리게해서 낮은 주파수의 신호로 오해할 수 있다는거다.
그럼 원 신호를 정확하게 샘플링하려면 적어도 어느정도 되어야하는가?하는 의문이 있을 것이다. 이때 등장하는게 나이퀴스트 주파수라는 희안한 말이 등장한다.

나이퀴스트 주파수

Harry Nyquist

근-엄한 이 분의 이름을 따서 만들어진 것이 나이퀴스트 주파수인데, 이것도 대충 설명하자면 적어도 원 주파수의 2배이상 샘플링 해야한다는 이야기다. 그럼 진짜로 2배이기만 하면 읽을 수 있을까? 싶어서 실험하나 해봤다.

10Hz sine wave

여기 10Hz로 진동하는 sine wave가 있다. 저 아저씨가 구라핑을 찍는지 아닌지 알기 위해 5Hz와 10hz 한번 샘플링 해보겟다.

확실히 직선으로 찍히는거 보니까 얼추 이야기가 맞는것 같다. 그럼 2배인 20hz로 찍으면 맞냐?

꼭 그렇지만도 않다. 그림에서 보는 것처럼 sine wave에서는 일직선으로 나오기 때문이다.

사실은 나이퀴스트 이론에서 이야기 하는 것은 구체적인 수식이나 증명식이 있는 것은 아니다. 다만 phase가 0인 sine wave가 아니라면 복원이 어느정도 가능한 것으로 보이긴 한다.

위에 있는 표는 cosine wave로 표기한 것인데, 위와 같은 경우는 얼추 잘 맞는다고도 볼 수 있기 때문이다. 그래서 적어도 2배 이상은 되어야 한다고 표현을 하는듯 하다.
실험치로 정해진 것은 2.56배 이상은 되어야 한다고하더라.

sine wave로 2.56배 이상으로 샘플링 한 것이 위와 같다고 하는데, 실제로 이걸 주파수 도메인에서 보면 어떻게 나오는지 보자.

생긴건 이상하게 생겼지만 FFT로 돌려보면 10Hz로 잘 나오는 것을 볼 수 있다.

앨리어싱 뜯어보기

그럼 이제 아래와 같이 210hz의 원신호를 200hz로 샘플링 한 것을 보자.

나이퀴스트 이론에 따라 표현할 수 있는 값의 범위는 -100 ~ 100Hz이다.(원 신호를 복원하려면 적어도 2배는 되어야하므로, 표현 가능한 범위도 fs의 1/2이라고 보기 때문이다.) 따라서 주파수 도메인에서는 아래와 같이 표현된다.

그럼 이게 왜 10Hz이냐? 이건 삼각함수의 주기성을 가지고 증명할 수 있다.
삼각함수는 아래와 같은 주기를 가진다.

\cos(\theta) = \cos(2 \pi k + \theta)

따라서 주파수가 f_{o} + kf_{s}인 정형파를 f_{s}로 샘플링시 아래와 같다.

cosine을 시간 형식으로 표현하면 \cos(2\pi ft + \theta)이고 디지털 형식으로 표현하면 \cos(2\pi fnT_{s} + \theta), 여기서 T_{s} = \frac1{f_{s}}인 것임을 유념하라.

이제 여기서 signal이 210이고 fs가 200일 때는 아래와 같이 유도될 것이다.

위에 보이는 10이 \cos(2\pi fnT_{s} + \theta) 형식에 적용 했을 때 \cos(2\pi 10nT_{s})이므로, 10hz의 cosine wave임을 알 수 있다.

그럼 반대로 110일 때는 어떻게 되느냐?

90으로 표현이 되는데, 실제로도 그렇게 표현되는지 보자.

그림은 위에 보이는 것처럼 표현되고 주파수도 90Hz로 표현된다. 이렇게 110Hz(100 + 10)가 pi에 해당되는 100Hz를 기점으로 90Hz(100 – 10)로 표현되는 것을 folding frequency라고 표현하는데, 말그대로 100을 기점으로 접혀서 표현되는 것을 일컫는 말이다. 암튼 그래서 내가 아는 신호의 범위를 알고 있다면 적어도 2배 이상 샘플링을 해야 된다는 결론을 얻을 수 있다.

기회가 되면 다음에는 LPF나 HPF에 대한 포스팅을 해보려 한다. 오늘 포스팅은 여기서 끗.

“앨리어싱 (Aliasing) 현상에 대해 쉽게 알아보자”에 대한 6개의 생각

  1. 아니 이걸 이렇게?

    그저 빛나는 글입늬다..
    f0+kfs가 어떻게 유도된건지 궁금합니다…(질문이 맞는지 모르겠는데..)
    그리고 이걸 fs로 샘플링하여 나온 유도식도 어떤 방식인지..

    1. f0는 실질적으로 표기되는 주파수를 f0로 설정하는 것이고 kfs는 k * fs입니다. sine/cosine wave는 주기성을 가지고 있기 때문에 pi/2나 pi/2 + 2 * pi를 한 친구나 값이 같습니다. 따라서 원 신호가 210hz고 fs가 200hz인 경우 10 + 200hz의 형태로 표현이 가능하고, 실 출력은 10hz처럼 보이게 됩니다. 그게 그래프가 가지는 의의라고 할 수 있습니다.
      110인 경우는, fft에서 표기가 가능한 범위는 -100~100hz가 되고 110은 110-200을 해서 -90으로 표기가 되고 cosine에서는 90과 같으므로 90에 표기가 되게 됩니다.

  2. 감사합니다. 많은 도움이 되었습니다.
    그럼 이론상 fs의 정수배 되는 신호를 샘플링하면 모두 DC 성분으로 계산이 되려나요?

    1. 조아님 안녕하세요.
      정수 배가 되는 sine wave를 샘플링 했을 때의 값을 보면 명확히 알 수 있어 보입니다.
      Fs의 정수배라면 sine은 주기성을 가지므로 어느 한 값만 고정적으로 샘플링 될 것 같습니다.

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.