2.6 Generarea zgomotului digital

Zgomotul aleatoriu este un subiect important atât în ​​electronică, cât și în DSP. De exemplu, limitează cât de mic este un semnal pe care un instrument îl poate măsura, distanța la care poate comunica un sistem radio și câtă radiație este necesară pentru a produce o imagine cu raze x. O necesitate comună în DSP este de a genera semnale care seamănă cu diferite tipuri de zgomot aleatoriu. Acest lucru este necesar pentru a testa performanța algoritmilor care trebuie să funcționeze în prezența zgomotului.

Inima generării zgomotului digital este generatorul de numere aleatorii. Majoritatea limbajelor de programare au aceasta ca o funcție standard. Instrucțiunea BASIC: X = RND, încarcă variabila X cu un nou număr aleatoriu de fiecare dată când se întâlnește comanda. Fiecare număr aleator are o valoare între zero și unu, cu o probabilitate egală de a fi oriunde între aceste două extreme. Figura 2-10a prezintă un semnal format prin preluarea a 128 de eșantioane de la acest tip de generator de numere aleatorii. Media procesului care a generat acest semnal este de 0,5, deviația standard este 1/√12 = 0,29, iar distribuția este uniformă între zero și unu.

Algoritmii trebuie să fie testați folosind același fel de date pe care le vor întâlni în funcționarea reală. Aceasta creează necesitatea de a genera zgomot digital cu un pdf Gaussian. Există două metode de generare a unor astfel de semnale utilizând un generator de numere aleatoare. Figura 2-10 ilustrează prima metodă. Figura (b) prezintă un semnal obținut prin adunarea a două numere aleatorii pentru a forma fiecare eșantion, adică X = RND + RND. Deoarece fiecare dintre numerele aleatoare poate rula de la zero la unu, suma poate rula de la zero la doi. Media este acum unu, iar abaterea standard este 1/√ 6 (amintiți-vă, atunci când se adună semnale aleatoare independente, se adună și varianțele). După cum se arată, PDF-ul s-a schimbat de la o distribuție uniformă la o distribuție triunghiulară. Adică, semnalul își petrece mai mult timp în jurul valorii de unu, cu mai puțin timp petrecut aproape de zero sau doi.

Figura (c) ia această idee cu un pas mai departe prin adunarea a douăsprezece numere aleatorii pentru a produce fiecare eșantion. Media este acum șase, iar abaterea standard este unu. Ceea ce este cel mai important, PDF-ul a devenit practic Gaussian. Această procedură poate fi utilizată pentru a crea un semnal de zgomot distribuit normal, cu o medie și deviație standard arbitrare. Pentru fiecare eșantion din semnal: (1) adună douăsprezece numere aleatorii, (2) scade șase pentru a face media egală cu zero, (3) înmulțește cu deviația standard dorită și (4) adaugă media dorită.

Baza matematică a acestui algoritm este cuprinsă în Teorema Limitei Centrale, unul dintre cele mai importante concepte din probabilitate. În cea mai simplă formă, Teorema Limitei Centrale afirmă că o sumă de numere aleatoare devine normal distribuită, deoarece tot mai multe dintre numerele aleatoare sunt adunate împreună. Teorema Limitei Centrale nu necesită ca numerele aleatorii individuale să fie de la o distribuție specială sau chiar ca numerele aleatorii să fie din aceeași distribuție. Teorema Limitei Centrale furnizează motivul pentru care semnalele normal distribuite sunt văzute atât de larg în natură. Ori de câte ori interacționează multe forțe aleatorii diferite, pdf rezultat devine un Gaussian.

În a doua metodă de generare a numerelor aleatoare normal distribuite, generatorul de numere aleatorii este invocat de două ori, pentru a se obține R1 și R2. Un număr aleator normal distribuit, X, poate fi găsit atunci:

Ecuația 2-9

Generarea numerelor aleatoare distribuite normal. R1 și R2 sunt numere aleatoare cu o distribuție uniformă între zero și unu. Aceasta conduce la X distribuit normal cu o medie de zero și deviația standard de unu. log este în baza e iar cos este în radiani.

La fel ca înainte, această abordare poate genera semnale aleatoare normal distribuite cu o medie și deviație standard arbitrare. Luați fiecare număr generat de această ecuație, înmulțiți-l cu deviația standard dorită și adăugați media dorită.

Figura 2-10

Convertirea unei distribuții uniforme într-o distribuție Gaussiană. Figura (a) arată un semnal unde fiecare eșantion este generat de un generator de numere aleatoare. Cum este indicat de pdf, valoarea fiecărui eșantion este distribuită uniform între zero și unu. Fiecare eșantion în (b) este format prin adunarea a două valori de la generatorul de numere aleatoare. În (c), fiecare eșantion este creat prin adunarea a 12 valori de la generatorul de numere aleatoare. Pdf-ul lui (c) este foarte aproape Gaussian, cu o medie de șase, iar o deviație standard de unu.

Generatoarele de numere aleatoare funcționează începând cu o sămânță, un număr între zero și unu. Atunci când generatorul de numere aleatoare este invocat, sămânța este trecută printr-un algoritm fixat, rezultând un număr nou între zero și unu. Acest nou număr este raportat ca număr aleatoriu și apoi este stocat intern pentru a fi folosit ca sămânță data viitoare când este apelat generatorul de numere aleatorii. Algoritmul care transformă sămânța în noul număr aleator este adesea de forma:

Ecuația 2-10

Algoritm comun pentru generarea numerelor aleatoare distribuite uniform între zero și unu. În această metodă, S este sămânța, R este noul număr aleator, iar a, b și c sunt constante alese adecvat. În cuvinte, cantitatea aS + b se divide cu c iar restul este R.

R = (aS + b) modulo c

În acest mod, o secvență continuă de numere aleatorii poate fi generată, toate pornind de la aceeași sămânță. Acest lucru permite ca un program să fie rulat de mai multe ori folosind exact aceleași secvențe de numere aleatorii. Dacă doriți ca secvența de numere aleatorii să se schimbe, majoritatea limbajelor au o prevedere pentru reînnoirea generatorului de numere aleatoare, permițându-vă să alegeți primul numărul utilizat ca sămânță. O tehnică comună este folosirea timpului (așa cum este indicat de ceasul sistemului) ca sămânță, oferind astfel o nouă secvență de fiecare dată când programul este rulat.

Din perspectiva pur matematic, numerele generate în acest fel nu pot fi absolut aleatorii, deoarece fiecare număr este complet determinat de numărul anterior. Termenul pseudo-aleatoriu este adesea folosit pentru a descrie această situație. Cu toate acestea, acest lucru nu trebuie să vă îngrijoreze. Secvențele generate de generatoarele de numere aleatorii sunt statistic aleatoare până la un grad extrem de ridicat. Este foarte puțin probabil să întâlniți o situație în care acestea nu sunt adecvate.

Secțiunea următoare: Precizie și acuratețe