16
Additive White Gaussian Noise

Additive White Gaussian Noise

  • Upload
    hans

  • View
    334

  • Download
    14

Embed Size (px)

DESCRIPTION

Additive White Gaussian Noise. - PowerPoint PPT Presentation

Citation preview

Page 1: Additive White Gaussian Noise

Additive White Gaussian Noise

Page 2: Additive White Gaussian Noise

White gaussian noise 란 ?

Gaussian noise is noise that has a probability density function (abbreviated pdf) of the normal distribution (also known as Gaussian distribution). In other words, the values that the noise can take on are Gaussian-distributed. It is most commonly used as additive white noise to yield additive white Gaussian noise (AWGN).

White noise 란 말은 전 주파수 대역에 고르게 분포된 잡음을 말하며 , gaussian 확률함수로 모델링되어 주로 AWGN 에 적용된다 .

Page 3: Additive White Gaussian Noise

White gaussian noise

잡음은 원하지 않는 신호이지만 , 신호처리 알고리즘을 실험하는 과정에서 실제 잡음 상황을 만들기 위하여 잡음 신호를 생성할 필요가 있다 . Random process {Xn} 이 다음과 같은 조건을 만족할 때 white process 라 부른다

White process 는 시간적으로 다른 시점에서 발생한 샘플 값들이 통계적으로 uncorrelate되어 있다 . 평균이 0 인 white process 의 경우 autocorrelation sequence 는 다음과 같이 주어진다 .

Page 4: Additive White Gaussian Noise

White gaussian noise

White process 의 probability density function(PDF) 이 다음과 같은 가우시안 PDF 를 가질 경우 , 이를 백색 가우시안 프로세스 (white gaussian process) 또는 백색 가우시안 잡음 (white gaussian noise, WGN) 이라고 부른다 .

가우시안 프로세스는 다음의 Central limit theorem 을 이용하여 생성할 수 있다 .

Page 5: Additive White Gaussian Noise

White gaussian noise

위의 정리를 이용하여 WGN 를 생성할 수 있다 . 위의 정리에서 독립 random variable 은 비교적 생성하기 쉬운 uniform PDF 을 가지는 process 를 생성해서 사용한다 .

위의 uniform PDF 을 가지는 random process 의 분산은 1/12 임을 적분을 통하여 얻을 수 있다 . 만약 uniform PDF 를 가지는 random process 가 white process 라면 이를 이용하여 생성되는 가우시안 프로세스도 white process 가 된다 . uniform PDF 을 가지는 white process 는 다음의 난수 생성을 통하여 얻을 수 있다 . 아래 식에서 % 은 modular 연산을 뜻하며 아래의 방식은 linear congruential sequence 를 얻는 remainder 알고리즘의 일종이다 .

여기서 생성된 난수는 0 과 M 사이에 있기 때문에 이를 M 으로 나누면 0 과 1 사이의 uniform PDF 을 가지는 sequence 를 얻을 수 있다

Page 6: Additive White Gaussian Noise

C 언어에서의 AWGN 함수 구현 알고리즘을 순서 1) remainder 알고리즘을 이용하여 0 과 1 사이의 난수를 생성한다 (C 언어의 stdlib.h 안 에 있는 rand() 함수도 사용 가능 ) 2) 생성된 난수 12 개를 더한다 3) 이렇게 더해진 sequence 의 평균은 6 이므로 평균을 0 으로 만들기 위해 6 을 뺀다

최종적으로 얻어진 sequence 의 평균은 0, 분산이 1 인 WGN 가 된다 .

Page 7: Additive White Gaussian Noise

C 언어 소스 코드#include <math.h> #include <stdio.h>#define J 2045L#define SHIFT 20 // 생략가능#define MM 1048576 /*(0x01L<<SHIFT)= 1048576*/#define SEED 78923static void WGN(float *x,float s_deviation,int len);void main(){ int i;

float sum=0;float mean=0; // 평균값float variance=0; // 분산값int b;

float a[9999]; // 10000 개의샘플을받음WGN(a,1,10000); // 10000 개의 Gaussian noise sample 생성

for(i=0;i<9999;i++){

sum=sum+a[i]; // 10000 개샘플의총합 (=sum)}

Page 8: Additive White Gaussian Noise

C 언어 소스 코드mean=sum/10000; // mean=> sum 의평균값

for(i=0;i<9999;i++){

variance=variance+(a[i]-mean)*(a[i]-mean);}

variance=variance/10000; // 분산을구하는식

printf("mean = %f \n variance = %f",mean,variance); // 평균과분산을출력

}

static void WGN(float *x,float s_deviation,int len){

short i,j;static long seed=SEED;float sum;

Page 9: Additive White Gaussian Noise

C 언어 소스 코드for(j=0;j<len;j++) {

sum=0;for(i=0;i<12;i++) // 분산이 1/12 인 process 를 12 번 더해서 분산을 1 로 만듬{

seed=(seed*J+1L)%MM; //seed 대신 0 에서 1 까지의 rand() 함수사용가능 sum=sum+(float)seed;

}sum/=(float)MM;sum=sum-6;sum*=s_deviation;x[j]=sum;

}

Page 10: Additive White Gaussian Noise

실행 결과 Visual studio 2008 에서의 실행결과

Page 11: Additive White Gaussian Noise

C 언어 소스 코드 또 다른 알고리즘으로는 box-muller 방식이 있으며 , 이 방식을 사용해도 동일한 결과를 얻을 수 있다 .

double gaussian(){

static int ready = 0;static double gstore;double v1, v2, r, fac, gaus;double uniform();if(ready == 0) {do {v1 = 2.*uniform();v2 = 2.*uniform();r= v1*v1 + v2*v2;} while(r > 1.0);fac = sqrt (-2.*log(r)/r);gstore = v1*fac;gaus = v2*fac;ready = 1;}else

Page 12: Additive White Gaussian Noise

C 언어 소스 코드return(gaus);}

double uniform(){

return( (double)(rand() & RAND_MAX) / RAND_MAX - 0.5);}

Page 13: Additive White Gaussian Noise

MATLAB 에서의 AWGN MATLAB 에서는 기본적으로 AWGN 함수들을 제공한다 . 사용 예는 다음과 같다

Page 14: Additive White Gaussian Noise

MATLAB 에서의 AWGN 실행 결과 (randn 함수 )

Page 15: Additive White Gaussian Noise

wdn 함수의 사용 ( 평균과 분산 )

Page 16: Additive White Gaussian Noise

randn 함수의 사용 ( 평균과 분산 )