random

Class: gmdistribution

Random numbers from Gaussian mixture distribution

Syntax

y = random(obj)
Y = random(obj,n)
[Y,idx] = random(obj,n)

Description

y = random(obj) generates a 1-by-d vector y drawn at random from the d-dimensional Gaussian mixture distribution defined by obj. obj is an object created by gmdistribution or fitgmdist.

Y = random(obj,n) generates an n-by-d matrix Y of n d-dimensional random samples.

[Y,idx] = random(obj,n) also returns an n-by-1 vector idx, where idx(I) is the index of the component used to generate Y(I,:).

Examples

expand all

Generate Gaussian Mixture Variates

Create a gmdistribution object defining a two-component mixture of bivariate Gaussian distributions.

MU = [1 2;-3 -5];
SIGMA = cat(3,[2 0;0 .5],[1 0;0 1]);
p = ones(1,2)/2;
obj = gmdistribution(MU,SIGMA,p);

ezcontour(@(x,y)pdf(obj,[x y]),[-10 10],[-10 10])
hold on

Generate 1000 random values.

rng(1); % For reproducibility
Y = random(obj,1000);

scatter(Y(:,1),Y(:,2),10,'.')

Was this topic helpful?