Verallgemeinerte Gaußsche Rauschgenerator in Matlab
-
19-09-2019 - |
Frage
ich brauche Generalized Gaussian Noise Generator in Matlab zu erstellen.
GGN ist ein Zufallssignal v
von folgenden Verteilung:
v ~ GN(mi, alfa, beta) :
p(v; mi, alfa, beta) = (beta/(2*alfa*gamma(1/beta))) * exp(-(abs(v - mi)/alfa).^beta )
Wo p die probablility für Wert v gezählt.
Beachten Sie, dass gamma
in Matlab-Funktion eingebaut, die den Wert von Gamma-Funktion berechnet.
Ich habe versucht, den Generator in folgenden Weise zu erstellen:
function gn = GN(dim1, dim2, mi, alfa, beta)
gn = zeros(dim1, dim2);
for i=1:dim1
for j=1:dim2
v = mi + 10*(alfa^2)* rand(1) - 5*(alfa^2);
prob = rand(1);
while(p(v, mi, alfa, beta) < prob)
v = mi + 10*alfa* rand(1) - 5*alfa;
prob = rand(1);
end
gn(i,j) = v;
end
end
function pval = p(v, mi, alfa, beta)
pval = (beta/(2*alfa*gamma(1/beta))) * exp(-(abs(v - mi)/alfa).^beta );
Aber die Schleife scheint unendlich zu sein, irgendwas falsch.
Beachten Sie auch, dass für:
beta = 2
diesen Generator sollte Werte gleich normale Gaußsche Verteilung mit Mittelwert und Standardabweichung mi
alfa^2/2
zurückkehren
Bearbeiten
OK, Doug wies mich in die richtige Richtung. Wir müssen den v
Wert schaffen, die mehr oder weniger wahrscheinlich ausgewählt werden (ich davon ausgegangen, dass 10 * std recht gut ist) und dann überprüfen Sie die Wahrscheinlichkeit erhalten.
Es ist auch wichtig, einen neuen prob
Wert für jede Wahrscheinlichkeitsprüfung (in while-Schleife) zu zeichnen.
Das Problem ist also GELöST
Beachten Sie, dass dieser Generator ermöglicht es Ihnen, zu generieren:
- Gaußsche Rauschen für beta = 2
- Laplasian (Impuls) Lärm für beta = 1
Lösung
Ich habe versucht, und es hat gut funktioniert. Beachten Sie, dass ich die Zufallsschwelle die Zufallszahl je 0,1 (eine gültige Wahl von [0 1]) gesetzt. pval muss groß sein, als prob in Kauf genommen werden.
>> GN(2,2,1,1,2)
prob =
0.1000
pval =
0.4738
prob =
0.1000
pval =
0.2674
prob =
0.1000
pval =
0.4885
prob =
0.1000
pval =
0.5473
ans =
0.5821 0.1358
0.6204 0.8254
Es scheint mir, wie dies nur eine harte Lotterie zu gewinnen, wenn die Zufallsschwelle nahe 1. Beachten Sie die möglichen Zahlen, die für pval kommen.
Es ist nicht Endlosschleife, nur, dass Sie MATLAB fragen Zufallszahl zu wählen, bis Sie im Lotto gewinnen, mehrmals! Es scheint ein bisschen ein Bogosort