Cómo usar matlab para generar números aleatorios que obedezcan una distribución gaussiana mixta
N=8
miu1=1; > sigma1=2; %parámetros de la primera distribución
miu2=6; %parámetros de la segunda distribución
sigma2=1; p>R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N);
La probabilidad de un solo punto es 0, entonces sacas ¿Cuál es el número aleatorio?
Varios números aleatorios deben satisfacer una distribución estadística, que está determinada por el intervalo.
Además, no sé qué es exactamente lo que quieres hacer.
Si quieres generar números aleatorios según una determinada densidad de probabilidad, lo mejor es utilizar el método de la función inversa u otros métodos para obtenerlos.
Es como generar números aleatorios usando la distribución x.^2, pero los números deben normalizarse.
============================================ = =
En primer lugar, sé que mi enfoque es incorrecto. La siguiente imagen muestra esto
M=1000; %Generar una matriz de números aleatorios con M filas y N columnas
N=1
miu1=1; %Parámetros de la primera distribución
sigma1=2; %Parámetros de la primera distribución
miu2=6; %Parámetros de la segunda distribución
sigma2=1 ; %parámetros de la segunda distribución
R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,sigma2,M,N); =-5:0.001:15;
y1=normpdf(x,miu1,sigma1);
y2=normpdf(x,miu2,sigma2); > p>
subtrama(2,2,1);
trama(x,y1
subtrama(2,2,2); p >trama(x,y2);
subtrama(2,2,3
y3=0.2*y1+0.8*y2; ( x,y3);
subtrama(2,2,4)
dx=0.5
xx=-5:dx:15; p >
yy=hist(R,xx);
yy=yy/M/dx
plot(x,y3); Espera
barra(xx,yy)
============================= == ==========
Correcto hecho, aún no lo he conseguido funcionar, continúa.... .
=========================================== ==
____________________ Nuevo intento
Creo que los siguientes resultados pueden ser aceptables.
Idea: basado en el método de transformación inversa
El siguiente Matlab tiene
p=normpdf(x,miu,sigma) es encontrar la densidad de probabilidad en incógnita.
p=normcdf(x,miu,sigma) es encontrar la densidad de probabilidad acumulada de X Di un intervalo y tomé la probabilidad fuera de este intervalo como 0 (no es lo suficientemente riguroso, en teoría debería ser desde infinito negativo hasta infinito positivo) Aquí tomé -10: 15, durante el cual tomé 25.000 puntos y calculé el valor de probabilidad acumulada de estos puntos (la suma ponderada de dos y3), registrado como F(x), según el método de transformación inversa, F (x)=u, donde u es un número aleatorio uniforme de 0 a 1. Siempre que se encuentre su solución x0, entonces x0 satisface la distribución de densidad de probabilidad dada. Aquí estoy usando interpolación. Utilice (y3,x) para la interpolación, donde u es La afirmación aquí no es lo suficientemente rigurosa. El enfoque más riguroso debería ser utilizar el método analítico para realizar la transformación inversa. . %%%%% El siguiente es el programa M=1000 %Generar una matriz de números aleatorios con M filas y N columnas N=1; ; N=1; p> miu1=1; %parámetros de la primera distribución sigma1=2; distribución miu2=6; % Parámetros de la segunda distribución sigma2=1; % Parámetros de la segunda distribución x=-10:0.001:15; /p> y1=normpdf(x,miu1,sigma1); y2=normpdf(x,miu2,sigma2); y3=0.2*y1+0.8*; y2; y1=normcdf( x,miu1,sigma1); y2=normcdf(x,miu2,sigma2); y=0.2*y1); +0.8*y2; u =rand(N,M); R=interp1(y, x,u,'lineal'); dx=0.5; xx= -10:dx:15; yy=hist(R,xx); bar(xx,yy ) espera plot( x,y3,'r*')