Additive White Gaussian Noise

Slides:



Advertisements
Similar presentations
어서와 Java는 처음이지! 제3장선택과 반복.
Advertisements

Eliminating noise and other sources of error
적분방법의 연속방정식으로부터 Q=AV 방정식을 도출하라.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
4.3.3 초기하분포 (Hypergeometric distribution)
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
제3장 게임기본모듈 Page 153 ~ 182.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
10장 랜덤 디지털 신호처리 1.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
2007 1학기 10 함수 활용.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
패턴인식 개론 Ch.5 확률 변수와 확률 분포.
제9장 채널용량(Channel capacity)
Multimedia Programming 10: Point Processing 5
임베디드 실습 # LED, 7’Segment 제어
프로그래밍2 및 실습 C언어 기반의 C++ 2.
확률통계론 2장 : 확률변수.
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
프로그래밍 랩 – 7주 리스트.
CH 4. 확률변수와 확률분포 4.1 확률 확률실험 (Random Experiment, 시행, Trial) : 결과를 확률적으로 예측 가능, 똑 같은 조건에서 반복 근원사상 (Elementary Event, e) : 시행 때 마다 나타날 수 있는 결과 표본공간.
제 3 장 상수와 변수
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
Chapter 10 함수 기본.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
(independent variable)
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Biomedical Instrumentation
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
Fitting / Matrix / Excel
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Part 06 세상을 변화시키는 연산자 안산1대학 디지털정보통신과 임 성 국.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
미분방정식.
Distribution(모의 실험에 자주 쓰이는 분포들)
프로그램 개발 방법론 부재 : 연습문제 (6장) 학번: 이름:김치우.
Image Restoration Using MATLAB Image ToolBox Visual Communication Lab
Sampling Distributions
7주차: Functions and Arrays
함수, 모듈.
최소의 실험 횟수에서 최대의 정보를 얻기 위한 계획방법 분석방법: 분산분석(Analysis of Variance, ANOVA)
상관계수.
Numerical Analysis Programming using NRs
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
어서와 C언어는 처음이지 제16장.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
C.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
실 습 2.
어서와 C언어는 처음이지 제22장.
문제의 답안 잘 생각해 보시기 바랍니다..
Presentation transcript:

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에 적용된다.

White gaussian noise 잡음은 원하지 않는 신호이지만, 신호처리 알고리즘을 실험하는 과정에서 실제 잡음 상황을 만들기 위하여 잡음 신호를 생성할 필요가 있다. Random process {Xn}이 다음과 같은 조건을 만족할 때 white process라 부른다 White process는 시간적으로 다른 시점에서 발생한 샘플 값들이 통계적으로 uncorrelate되어 있다. 평균이 0인 white process의 경우 autocorrelation sequence는 다음과 같이 주어진다.

White gaussian noise White process의 probability density function(PDF)이 다음과 같은 가우시안 PDF를 가질 경우, 이를 백색 가우시안 프로세스(white gaussian process) 또는 백색 가우시안 잡음(white gaussian noise, WGN)이라고 부른다. 가우시안 프로세스는 다음의 Central limit theorem을 이용하여 생성할 수 있다.

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를 얻을 수 있다

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

C언어 소스 코드 #include <math.h> #include <stdio.h> #define J 2045L #define SHIFT 20 // 생략가능 #define MM 1048576 /*(0x01L<<SHIFT)= 1048576*/ #define SEED 78923 static 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) }

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;

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;

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

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

C언어 소스 코드 return(gaus); } double uniform() { return( (double)(rand() & RAND_MAX) / RAND_MAX - 0.5);

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

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

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

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