gusucode.com > 用粒子滤波算法进行跟踪的matlab代码 > gmm_utilities/gmm_conditional.m
function [g, c] = gmm_conditional(g, x, idx) % ALPHA VERSION % Deriving the conditional, given the joint, is found by considering a % perfect observation (ie, constraint) at x. % % In order to consider p(gmm|x) as a function of x, not just at x=x0, % this function returns c, the original cross-correlations of g. % % see also: Bar p123 % TODO: A better way is to work this out longhand, and calculate directly, % but for now its easier to set it up as an observation. D = size(g.x, 1); Dc = size(x, 1); H = zeros(Dc, D); i = index_table(H, [1:Dc; idx]); H(i) = 1; gz.w = 1; gz.x = x; gz.P = zeros([Dc, Dc, 1]); g = gmm_update(g, gz, H); g = gmm_marginal(g, setdiff(1:D, idx));