gusucode.com > 用粒子滤波算法进行跟踪的matlab代码 > gmm_utilities/kernel_distance_bayes.m

    function D = kernel_distance_bayes(g1, g2)
%
% Evidence of hypothesis, or Bayes normaliser, or probability of observation p(z|Z)

dim = size(g1.x, 1);

S = g1.P + g2.P;
Sc = chol(S)';
denom = (2*pi)^(dim/2) * prod(diag(Sc));

D = 0;
for i=1:size(g1.x,2)
    for j=1:size(g2.x,2)
        wij = evaluate_likelihood(g1.x(:,i)-g2.x(:,j), Sc, denom);
        D = D + g1.w(i) * g2.w(j) * wij;
    end
end

%
%

function w = evaluate_likelihood(v, Sc, denom)
%
vc = Sc\v;
numer = -0.5 * sum(vc.*vc, 1);    
w = exp(numer) / denom;