# Create Gaussian Mixture Model

This example shows how to create a known, or fully specified, Gaussian mixture model (GMM) object using gmdistribution and by specifying component means, covariances, and mixture proportions. To create a GMM object by fitting data to a GMM, see Fit Gaussian Mixture Model to Data.

Specify the component means, covariances, and mixing proportions for a two-component mixture of bivariate Gaussian distributions.

mu = [1 2;-3 -5];                    % Means
sigma = cat(3,[2 0;0 .5],[1 0;0 1]); % Covariances
p = ones(1,2)/2;                     % Mixing proportions

The rows of mu correspond to the component mean vectors, and the pages of sigma, sigma(:,;,J), correspond to the component covariance matrices.

Create a GMM object using gmdistribution.

gm = gmdistribution(mu,sigma,p);

Display the properties of the GMM.

properties(gm)
Properties for class gmdistribution:

NumVariables
DistributionName
NumComponents
ComponentProportion
SharedCovariance
NumIterations
RegularizationValue
NegativeLogLikelihood
CovarianceType
mu
Sigma
AIC
BIC
Converged
ProbabilityTolerance

For a description of the properties, see gmdistribution. To access the value of a property, use dot notation. For example, access the number of variables of each GMM component.

dimension = gm.NumVariables
dimension = 2

Visualize the probability density function (pdf) of the GMM using pdf and the MATLAB® function fsurf.

gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gm,[x0 y0]),x,y);
fsurf(gmPDF,[-10 10])
title('Probability Density Function of GMM');

Visualize the cumulative distribution function (cdf) of the GMM using cdf and fsurf.

gmCDF = @(x,y) arrayfun(@(x0,y0) cdf(gm,[x0 y0]),x,y);
fsurf(gmCDF,[-10 10])
title('Cumulative Distribution Function of GMM');