Mercurial > hg > camir-aes2014
diff toolboxes/FullBNT-1.0.7/netlab3.3/gmmpost.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/FullBNT-1.0.7/netlab3.3/gmmpost.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,36 @@ +function [post, a] = gmmpost(mix, x) +%GMMPOST Computes the class posterior probabilities of a Gaussian mixture model. +% +% Description +% This function computes the posteriors POST (i.e. the probability of +% each component conditioned on the data P(J|X)) for a Gaussian mixture +% model. The data structure MIX defines the mixture model, while the +% matrix X contains the data vectors. Each row of X represents a +% single vector. +% +% See also +% GMM, GMMACTIV, GMMPROB +% + +% Copyright (c) Ian T Nabney (1996-2001) + +% Check that inputs are consistent +errstring = consist(mix, 'gmm', x); +if ~isempty(errstring) + error(errstring); +end + +ndata = size(x, 1); + +a = gmmactiv(mix, x); + +post = (ones(ndata, 1)*mix.priors).*a; +s = sum(post, 2); +if any(s==0) + warning('Some zero posterior probabilities') + % Set any zeros to one before dividing + zero_rows = find(s==0); + s = s + (s==0); + post(zero_rows, :) = 1/mix.ncentres; +end +post = post./(s*ones(1, mix.ncentres));