www.pudn.com > gmm_utilities.zip > 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;