Skip to content

Generate White Gaussian Noise

by persada on March 21st, 2010

Hari ini saia mendapat sms dari seorang teman, yang membutuhkan sebuah generator white gaussian noise, dengan mengandalkan sebuah fungsi random yang menghasilkan sebuah variabel bebas. Variabel bebas tersebut mempunyai distribusi sama (seperti peluang munculnya sebuah nilai tertentu pada pelemparan dadu) atau sering disebut distribusi uniform. Padahal yang dibutuhkan adalah variabel  dengan distribusi gaussian atau distribusi normal. Wah, bagimana caranya ya? (thinking)

Akhirnya, setelah surfing kesana kemari, (haha) ketemu juga deh. (yahoo) Salah satu cara membangkitkan variabel dengan Distribusi Gaussian dari  adalah menggunakan Limit Central Theorem. Inti dari Limit Central Theorem ini adalah jumlahan dari N variabel bebas, distribusinya dapat mendekati distribusi Gaussian, bila N mendekati tidak berhingga. Algoritmanya adalah :

X = 0;
for i = 1 to N
  U = Random ; // jangkauan [0,1]
  X = X + U;
end;

Yup, simple saja seperti itu. (okok)  Namun,  variabel bebas antara [0,1], mempunyai nilai mean = 1/2 dan varians = 1/12, sehingga distribusi Gaussnya juga akan terpengaruh oleh rataan dan varians tersebut.  Agar rataannya menjadi 0 dan varians-nya menjadi 1, maka variabel X tersebut harus digeser. Algoritma penggeserannya cukup sederhana :

X = X - N/2
X = X - sqrt (12/N)

Bila diinginkan rataannya adalah mean dan varians-nya adalah variance, maka ditambahkan baris:

X' = mean + sqrt (variance) * X

Agar diperoleh hasil yang baik, disarankan untuk memilih nilai N ≥ 20. Semoga bermanfaat, dan selamat mencoba..  :-D

From → Tutorials

7 Comments
  1. putri permalink

    dicek pake KDE, negentropy, dan nongausianity-nya :-D

  2. persada permalink

    @putri : wuuzzz.. saia mah ngikut aja neng.. (worship)

  3. nanang permalink

    klo bikin pink noise gimana? :P

  4. persada permalink

    @mas nanang : hmm,, bentar saia cari dahulu.. :-P

  5. putri permalink

    saya suka warna ijo dan abu2
    bikinin green noise dan grey noise donk (ninja)

  6. ratnaayu_nina permalink

    hi ho,
    kebetulan nina lg mempelajari random signal dan juga speech processing. ni ad project kecil, dmn nina butuh generate random signal juga. ni program kecil dan simple yg nina bkin mngu lalu buat generate white noise in wave file. kalo ad salah mohon maaf. hi2, bikinya cuma 10min (cepat2).

    function white_noise_generation(input, v, m, a, output)

    %white_noise_generation(‘input.wav’, v, m, a, ‘output.wav’)
    %input is the file that will be mixed with noise in addnoise.m
    %m=0; v=1; a=amplitude in %;
    %By R.Winduratna
    [y,Fs,bits] = wavread(input);
    N=size(y)+16;
    bruit=a/100*(m+v*randn(1, N));
    wavwrite(bruit, Fs, bits, output);

  7. @nina:
    sama kan cuma bedanya isyaratnya disimpan dalam bentuk wav (tongue)
    bikin apa na? Jadi inget TA-ku ada speech, load wav file, random signal (ninja)

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS