function likelihood = marginalProbability(x,parameters,method,post) [obs,dim] = size(x); if(method == 1) n = dim/2; normal = (2*pi)^(n); for i = 1:parameters.nc diffs = x - (ones(obs, 1) * parameters.mus(i,:)); % Use Cholesky decomposition of covariance matrix to speed computation c = chol(parameters.covariances(:,:,i)); temp = diffs/c; sample(:,i) = exp(-0.5*sum(temp.*temp, 2))./(normal*prod(diag(c))); end likelihood = sum((sample .* (ones(obs,1)*parameters.alphas)),2); end if(method == 2) n = dim/2; for class = 1:parameters.nc errors = x - (ones(obs, 1) * parameters.mus(class,:)); K = parameters.covariances(:,:,class); Kinv = inv(K); G = det(K); for man = 1:obs sample(man,class)=(1/((2*pi)^n)*sqrt(G))*exp(-.5*errors(man,:)*Kinv*errors(man,:)'); end end likelihood = sum((sample .* (ones(obs,1)*parameters.alphas)),2); end