www.pudn.com > gmm_utilities.zip > kernel_to_gaussian.m


function [x,P,wn] = kernel_to_gaussian(g) 
% Convert kernels to a single Gaussian (ie, compute first two moments).  
 
[g, wn] = kernel_normalise(g); % must be normalised for weighted sums to be meaningful 
 
[D,N] = size(g.x); 
w = reprow(g.w, D); 
x = sum(w.*g.x, 2); 
 
xerr = g.x - repcol(x, N); 
P = g.P + w.*xerr*xerr';  
% Note: above is order-dependent. Must do (w.*xerr)*xerr', not w.*(xerr*xerr')