Je dois créer un générateur de bruit gaussien généralisé en Matlab.Générateur de bruit gaussien généralisé en matlab
GGN est un signal aléatoire v
de répartition suivante:
v ~ GN(mi, alfa, beta) :
p(v; mi, alfa, beta) = (beta/(2*alfa*gamma(1/beta))) * exp(-(abs(v - mi)/alfa).^beta)
où p est le probablility compté pour valeur v
de notes, qui gamma
est construit en fonction Matlab qui calcule la valeur de Gamma function. .
J'ai essayé de créer le générateur manière suivante:
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);
Mais la boucle semble être infinie, somethings mal.
Notez aussi que pour:
beta = 2
ce générateur doit renvoyer des valeurs égales à la distribution gaussienne normale avec une valeur moyenne mi
et écart-type alfa^2/2
Modifier OK, Doug m'a orienté dans la bonne direction. Nous devons créer la valeur v
qui est plus ou moins probable d'être sélectionnée (j'ai supposé que 10 * std est assez bon) et ensuite vérifier la condition de probabilité.
Il est également important de dessiner une nouvelle valeur prob
pour chaque vérification de probabilité (dans la boucle while).
Le problème est RESOUDRE
Notez que ce générateur vous permet de générer:
- bruit gaussien pour beta = 2
- Laplasian (impulsion) bruit pour beta = 1
Quelles valeurs passez-vous à 'GN' qui le fait boucler infiniment? – gnovice
Si cela a aidé, veuillez accepter la réponse. Merci! Doug – MatlabDoug
Désolé, j'ai oublié;) – Gacek