From 7dbc2accae36c7c1b5c8f8c2afb6cac8b26c482f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Karam=C3=A9?= <frederic.karame@univ-lemans.fr> Date: Fri, 4 Dec 2015 11:44:45 +0100 Subject: [PATCH] Fix a bug in the gaussian density calculation. --- src/gaussian_densities.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gaussian_densities.m b/src/gaussian_densities.m index 73a7314..ae3afb1 100644 --- a/src/gaussian_densities.m +++ b/src/gaussian_densities.m @@ -1,4 +1,4 @@ -function IncrementalWeights = gaussian_densities(obs,mut_t,sqr_Pss_t_t,st_t_1,sqr_Pss_t_t_1,particles,H,normconst,ReducedForm,ThreadsOptions) +function IncrementalWeights = gaussian_densities(obs,mut_t,sqr_Pss_t_t,st_t_1,sqr_Pss_t_t_1,particles,H,normconst,weigths1,weigths2,ReducedForm,ThreadsOptions) % % Elements to calculate the importance sampling ratio % @@ -43,7 +43,9 @@ prior = probability2(st_t_1,sqr_Pss_t_t_1,particles) ; % likelihood yt_t_1_i = measurement_equations(particles,ReducedForm,ThreadsOptions) ; eta_t_i = bsxfun(@minus,obs,yt_t_1_i)' ; -Pyy = H ; +yt_t_1 = sum(yt_t_1_i*weigths1,2) ; +tmp = bsxfun(@minus,yt_t_1_i,yt_t_1) ; +Pyy = bsxfun(@times,weigths2',tmp)*tmp' + H ; sqr_det = sqrt(det(Pyy)) ; foo = (eta_t_i/Pyy).*eta_t_i ; likelihood = exp(-0.5*sum(foo,2))/(normconst*sqr_det) + 1e-99 ; -- GitLab