Der Zufallsgenerator (für gleichverteilte Zufallszahlen) liefert dir
weißes Rauschen im Bereich von 0 bis zu halben Abtastfrequenz.
Integrierst du dieses Signal, erhältst du 1/f-Rauschen. Die Integration
kannst du durch einfaches Aufaddieren der Zufallswerte realisieren:
1 | // Zufallszahlen im Bereich [-0.5, +0.5]
|
2 | double rnd() {
|
3 | return (double)rand() / RAND_MAX - 0.5;
|
4 | }
|
5 |
|
6 | void generate(double x[], int n) {
|
7 | double sum = 0;
|
8 | int i;
|
9 | for(i=0; i<n; i++) {
|
10 | x[i] = sum;
|
11 | sum += rnd();
|
12 | }
|
13 | }
|
Edit: Mist, das oben Beschriebene ist kein rosa, sondern rotes Rauschen
(1/f²-Rauschen), da sich das 1/f bzw. 1/f² ja auf die Rauschleistung und
nicht die -amplitude bezieht. Aber 1/f-Rauschen kann sicher auch
irgendwie berechnet werden. Nur nicht mehr heute :)