Gnuradio

gnuradio - sampling and aliasing

망고토마토 2023. 3. 5. 09:18
반응형


이산화된 디지털 신호로 몇 Hz까지의 아날로그 신호를 표현할 수 있을까?


※참고자료 : wirelesspi - 1d sampling and aliasing 


임의의 아날로그 A신호를 fs(=1/Ts)로 샘플링하고, N개의 샘플을 모아서 이산화된 디지털 신호를 만들었다.
(= N*Ts 시간동안 신호를 모은 것이다. )

이산화된 디지털 신호는
임의의  A신호를 몇 Hz 까지 표현할 수 있을까?

또는 이산화 된 디지털 신호가 표현할 수 있는 아날로그 신호의 주파수 범위는 어느정도 일까?

N개의 데이터를 모으면
이산화된 디지털 신호는  N개의 N가지 complex sinusoids로
임의의 아날로그 A신호를 표현할 수 있다.

N개의 Complex sinusoids에 각각 번호를 부여하고, 그 번호를 k라고 한다면
k의 범위는 -N/2+1 ~ N/2이다.

즉 -fs*k/N ~ fs*k/N (또는 -fs/2 ~fs/2) 주파수를 가진 complex sinusoids로   임의의 아날로그 신호를 표현할 수 있다.

예를 들어

 

B 조건 상황에서 아날로그 신호를 이산화 했다.
B조건 : 100Hz 샘플링 주파수(fs)로 임의의 아날로그A 신호를 샘플링하고 데이터를 50개(N) 수집하였다.

-49Hz ~50Hz사이의 50개의 complex sinusoids(= 2Hz 간격으로 나누어진, 100Hz를 50개로 나누었으므로 )로 아날로그 신호를 표현가능하다.  
B조건에서 수집한 이산화 데이터로 0~ 50Hz까지의 아날로그 신호를 표현가능하다.  

 

C조건 상황에서 아날로그 신호를 이산화 했다.
C조건 : 100Hz 샘플링 주파수(fs)로 임의의 아날로그A 신호를 샘플링하고 데이터를 100개(N) 수집하였다.

-49Hz ~50Hz사이의 100개의 complex sinusoids(= 1Hz 간격으로 나누어진, 100Hz를 100개로 나누었으므로 )로 아날로그 신호를 표현가능하다.  

 

B조건, C조건 모두 이산화한 디지털 신호로 0~ 50Hz까지의 아날로그 실제 신호를 표현가능하다. 

다만 C조건이 B조건보다 촘촘하게 아날로그 신호를 표현할 수있다.

Alisaing은 무엇인가?

 

이산화된 디지털 신호는 -fs/2 ~ fs/2 사이의  complex sinusoids로만 아날로그 신호를 표현할 수 있다.

 

임의 아날로그 신호B가 포함하고 있는 주파수가  fs/2보다 크고,  이  B신호를 샘플링하여 이산화된 디지털 신호를 만들면 어떻게 될까?

 

이 때 aliasing이 발생하며 이산화된 디지털 신호가 표현가능한 주파수 범위는 -fs/2 ~ fs/2 이므로 B 신호가 가진 주파수를 제대로 표현하지 못한다. 

 

Samping과 Aliasing에 대해서 gnuradio로 시뮬레이션을 해보았다. 

 

 

wirelesspi의 sampling and aliasing 예제를 참고하였고 시뮬레이션하였다.

신호원은 complex 사인파 신호이다.  

 

그림 0 sampling and aliasing 시뮬레이션

 

그림 1 aliasing 발생하지 않음.

 

그림 2 aliasing 발생하였음

 

  샘플링 rate가 8KHz이면 이 조건에서 생성된 이산화 디지털 신호가 제대로 표현가능한 주파수 범위는 -4KHz~4KHz이다. 그림 1의 1KHz 복소수 사인파 신호를 8KHz로 샘플링한 것이다. 이 경우에는 aliasing이 발생하지 않았다. 1KHz의 복소수 사인파가 주파수 영역에서 제대로 표현되었다.

 

 

그림 2는 7KHz 신호를 8KHz 로 샘플링한 것이다. 그림 2에서는 Aliasing이 발생한다. 시간영역 그림을 보면 1ms의 주기와 같은 것을 볼 수 있으며 (실제로는 7KHz 신호인데 ! 말이다.), 주파수 영역의 결과를 보더라도 -1KHz 주파수를 가진 복소수 신호로 표현이 된다. 7KHz의 이산화 된 디지털 신호를 얻기 위해서는 8KHz의 샘플링 rate가 부족하다는 이야기이다. 

 

 

이산화 된 디지털 신호를 주파수 domain에서 보면 -fs/2 ~ fs/2 의 범위에 있는 신호들이 fs간격으로 주기적으로 반복된다. 다음과 같이 말이다. 

그림 3. 1KHz 신호를 샘플링한 경우의 스펙트럼

1KHz 신호를 8KHz로 샘플링한 이산화 디지털신호의 주파수 domain 을 보면 -7KHz[=1KHz -fs(8KHz)] 위치에 1KHz 신호의 성분이 위치한 것을 볼 수 있다. 1KHz 신호는 -7KHz 뿐만 아니라 8KHz[=1KHz+fs(8KHz)]에도 위치한다. 

 

7KHz 신호를 샘플링한 경우의 스펙트럼

 

 7KHz 신호를 8KHz로 샘플링한 이산화 디지털신호의 주파수 domain 을 보면 -1KHz[=7KHz -fs(8KHz)] 위치에 7KHz 신호의 성분이 위치한 것을 볼 수 있다. 7KHz 신호는 -1KHz 뿐만 아니라 15KHz[=7KHz+fs(8KHz)], 23KHz[=7KHz+2*fs(16KHz)], .... 이렇게 위치하고 있다.

사용자는  스펙트럼 장비를 볼 때 -fs/2 ~ fs/2 의 범위만 보게 되므로 마치 -1KHz를 가진 복소수 신호마나 본다.  

 

 ※ 7KHz 신호가 ...,  -1KHz, -9KHz, -17KHz ... 로 fs간격에 위치하는 것은 Aliasing 때문이 아니라, 아날로그 신호를 샘플링하면서 나타나는 주기성 때문이다. 샘플링하여 얻은 이산화 디지털 신호의 주파수 domain을 보면  -fs/2 ~ fs/2 사이의 신호들이 fs 간격으로 주기성을 가진다.  Aliasing은 임의의 신호를 샘플링할 때 나이퀴스트 샘플링 조건을 만족하지 못하여 샘플링 rate가 부족하여 생기는 현상이다.  인과 관계를 잘 생각해보자. 

반응형