Red de conocimiento informático - Material del sitio web - Cómo generar puntos de números aleatorios que satisfagan la distribución normal bivariada

Cómo generar puntos de números aleatorios que satisfagan la distribución normal bivariada

Pruebe: función aleatoria. O función [datos1, datos2] = dosgaussianos(n1,mu1,cov1,n2,mu2,cov2);

%

% [datos1, datos2] = dosgaussianos(n1,mu1 ,sigma1,n2,mu2,sigma2);

%

% se utiliza para simular datos de 2 densidades gaussianas en d dimensiones

% y trazar el datos en las 2 primeras dimensiones

%

% Entrada:

% n1, n2: dos números enteros, que representan los tamaños de los conjuntos de datos 1 y 2 respectivamente.

% mu1, mu2: dos vectores con dimensiones 1 x d, que representan la media

% utilizada para los conjuntos de datos 1 y 2

% y graficados antes del 2- datos dimensionales. Conjuntos de datos 1 y 2

% cov1, cov2: dos matrices con dimensiones d x d, que son las matrices de covarianza de los conjuntos de datos 1 y 2 respectivamente

%

%. Salida:

% data1: n1 x d matriz de datos del conjunto de datos 1

% data2: n2 x d matriz de datos del conjunto de datos 2 Compruebe si las dimensiones de mu y sigma son consistentes

d1 = longitud(mu1);

d2 = longitud(mu2);

if (d1~=d2)

error(' los medios son diferentes longitudes');

end;

d = length(mu1 % d es la dimensión de los datos

[d1 d2] = size(cov1)

if (d1~=d2)

error('cov1 es una matriz de covarianza no cuadrada'); /p>

if (d1~=d)

error('cov1 tiene una dimensionalidad diferente a mu1');

end; d2] = tamaño (cov2);

if (d1~=d2)

error('cov2 es una matriz de covarianza no cuadrada');

end;

p>

if (d1~=d)

error('cov2 tiene una dimensionalidad diferente a mu2');

end;

if (d1 ~=d)

error('cov2 tiene una dimensionalidad diferente a mu2');

end;% Llama a la función mvnrnd.m para generar dos conjuntos de datos

data1 = mvnrnd(mu1,cov1,n1);

data2 = mvnrnd(mu2,cov2,n2);% Ahora traza estos dos conjuntos de datos en un diagrama de dispersión bidimensional

% Si d = 2: Trazar la dimensión 1 en el eje x y la dimensión 2 en el eje y

%. Traza los puntos en los datos 1 como círculos verdes "o" y el

% de puntos en los datos 2 como cruces rojas "x".

if....

figure % Abre la ventana de gráficos

plot(data1(:,1),data1(:,2),'b . ');.... % Ahora dibuja data1

axis([-6 6 -6 6] % Se corrigió la longitud del eje de coordenadas

mantenga % Mantenga el gráfico para superponer los primeros dos gráficos

plot(data2(:,1),data2(.,2),'rx');% Ahora trace los datos 2

xlabel(' Dimensión 1') ;

ylabel('Dimensión 2');

title('Simulación de datos gaussianos de dos clases en dos dimensiones');

endfunction r = mvnrnd (mu,sigma,cases);

% MVNRND Matriz aleatoria de distribución normal multivariada. p>% R = MVNRND(MU,SIGMA,CASES) devuelve una matriz de números aleatorios seleccionados de la distribución normal multivariada

% con el vector medio MU y la matriz de covarianza SIGMA. CASOS es el número de filas de R.

%

% SIGMA es una matriz definida positiva cuadrada cuyo tamaño es igual a

% la longitud de MU.

end[m n] = tamaño(sigma);

if m ~= n

error('Sigma debe ser cuadrado');

endif m ~= c

error('La longitud de mu debe ser igual al número de filas de sigma.');

end[T p] = chol( sigma);

if p ~= 0

error('Sigma debe ser una matriz definida positiva.');

endif m1 == c

mu = mu';

endmu = mu(ones(casos,1),:);r = randn(casos,c) * T + mu;