gusucode.com > 用粒子滤波算法进行跟踪的matlab代码 > gmm_utilities/gmm_divide.m
function gr = gmm_divide(g1,g2) % % gr = g1/g2 % if length(g2.w) == 1 gr = gmm_divide_gauss_denominator(g1, g2); else gr = gmm_divide_gmm_denominator(g1, g2); end % % function gr = gmm_divide_gauss_denominator(g1, g2) D = size(g1.x, 1); M = size(g1.x, 2); gr.w = zeros(1,M); gr.x = zeros(D,M); for i=1:M [gr.x(:,i), gr.P(:,i), w] = gauss_divide(g1.x(:,i), g1.P(:,:,i), g2.x, g2.P); gr.w(i) = g1.w * w; end % % function gr = gmm_divide_gmm_denominator(g1, g2) error('Approximate solution required, not yet developed'); % TODO, look at: % - (approximately) factoring gaussian mixtures % - the Fast Gauss Transform, does it offer insights? % - automatic factoring of polynomials, is this a similar problem? % IDEA: % Generalised CI by creating a PDF where each point is equal to the minimum % of the point in the two PDFs being fused.