Cómo generar puntos de números aleatorios que satisfagan la distribución normal bivariada
%
% [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 p>
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 p>
mu = mu';
endmu = mu(ones(casos,1),:);r = randn(casos,c) * T + mu;