Main Content

random

Variables aleatorias de la distribución de mixtura gaussiana

Descripción

ejemplo

Y = random(gm) genera una variable aleatoria de 1 por m a partir de la distribución de mixtura gaussiana gm de dimensión m.

ejemplo

Y = random(gm,n) devuelve n variables aleatorias. Cada fila de Y es una variable aleatoria generada a partir de la distribución de mixtura gaussiana gm de dimensión m.

ejemplo

[Y,compIdx] = random(___) también devuelve un vector índice de n por 1 compIdx para cualquiera de los argumentos de entrada de las sintaxis anteriores. compIdx(i) indica el componente de mixtura usado para generar la i-ésima variable aleatoria Y(i,:).

Ejemplos

contraer todo

Cree un objeto gmdistribution y genere variables aleatorias.

Establezca los parámetros de distribución (medias y covarianzas) de una distribución de mixtura gaussiana de dos variables y dos componentes.

mu = [1 2;-3 -5];
sigma = [1 1]; % shared diagonal covariance matrix

Cree un objeto gmdistribution usando la función gmdistribution. De forma predeterminada, la función crea una mixtura de proporción equitativa.

gm = gmdistribution(mu,sigma)
gm = 

Gaussian mixture distribution with 2 components in 2 dimensions
Component 1:
Mixing proportion: 0.500000
Mean:     1     2

Component 2:
Mixing proportion: 0.500000
Mean:    -3    -5

Genere 1000 variables aleatorias.

rng('default'); % For reproducibility
[Y,compIdx] = random(gm,1000);

compIdx(i) indica el componente de mezcla usado para generar la i-ésima variable aleatoria Y(i,:). Cuente el número de variables aleatorias generadas por Component 1.

numIdx1 = sum(compIdx == 1)
numIdx1 = 512

random genera cerca de la mitad de las variables aleatorias usando Component 1 porque gm tiene unas proporciones de mezcla equitativas.

Represente las variables aleatorias generadas usando scatter.

scatter(Y(:,1),Y(:,2),10,'.') % Scatter plot with points of size 10

Figure contains an axes object. The axes object contains an object of type scatter.

Reinicie el generador de números aleatorios para generar la misma variable aleatoria.

Establezca los parámetros de distribución (medias, covarianzas y proporciones de mezcla) de dos componentes de mixtura gaussiana de dos variables.

p = [0.4 0.6];               % Mixing proportions     
mu = [1 2;-3 -5];            % Means
sigma = cat(3,[2 .5],[1 1])  % Covariances 1-by-2-by-2 array
sigma = 
sigma(:,:,1) =

    2.0000    0.5000


sigma(:,:,2) =

     1     1

La función cat concatena las covarianzas en la dimensión del tercer arreglo. Las matrices de covarianza establecidas son matrices diagonales. sigma(1,:,i) contiene los elementos diagonales de la matriz de covarianzas del componente i.

Cree un objeto gmdistribution usando la función gmdistribution.

gm = gmdistribution(mu,sigma);

Guarde el estado actual del generador de números aleatorios y, después, genere una variable aleatoria usando gm.

s = rng;
r = random(gm)
r = 1×2

   -1.1661   -7.2588

Restaure el estado del generador de números aleatorios con el valor s y, después, genere una variable aleatoria usando gm. Los valores son los mismos que antes.

rng(s);
r1 = random(gm)
r1 = 1×2

   -1.1661   -7.2588

Argumentos de entrada

contraer todo

Distribución de mixtura gaussiana, también llamada modelo de mixtura gaussiana (GMM), especificada como un objeto gmdistribution.

Puede crear un objeto gmdistribution usando gmdistribution o fitgmdist. Use la función gmdistribution para crear un objeto gmdistribution indicando los parámetros de distribución. Use la función fitgmdist para ajustar un modelo gmdistribution a los datos de acuerdo con un determinado número de componentes.

Número de variables aleatorias que se desea generar, especificado como un número entero positivo.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Variable aleatoria, devuelta como un vector numérico de 1 por m o una matriz numérica de n por m. Cada fila de Y es una variable aleatoria generada a partir de la distribución de mixtura gaussiana gm de dimensión m.

Índice de componentes, devuelto como un número entero positivo o un vector índice de n por 1, donde compIdx(i) indica el componente de mezcla usado para generar la i-ésima variable aleatoria Y(i,:).

Historial de versiones

Introducido en R2007b