gusucode.com > 用粒子滤波算法进行跟踪的matlab代码 > gmm_utilities/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')