Mercurial > hg > camir-ismir2012
diff toolboxes/FullBNT-1.0.7/netlab3.3/gmmpost.m @ 0:cc4b1211e677 tip
initial commit to HG from
Changeset:
646 (e263d8a21543) added further path and more save "camirversion.m"
author | Daniel Wolff |
---|---|
date | Fri, 19 Aug 2016 13:07:06 +0200 |
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 Fri Aug 19 13:07:06 2016 +0200 @@ -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));