From f4b7840739743f15fa763de1c527277492dbfc73 Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Mon, 22 Feb 2010 09:29:47 +0100 Subject: [PATCH] corrected bug for decompostion (nargout > 7) in missing_DiffuseKalmanSmoother3.m --- matlab/missing_DiffuseKalmanSmoother3.m | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/matlab/missing_DiffuseKalmanSmoother3.m b/matlab/missing_DiffuseKalmanSmoother3.m index b9740dff0..b05ee6cd6 100644 --- a/matlab/missing_DiffuseKalmanSmoother3.m +++ b/matlab/missing_DiffuseKalmanSmoother3.m @@ -296,19 +296,25 @@ if nargout > 7 decomp = zeros(nk,mm,rr,smpl+nk); ZRQinv = inv(Z*QQ*Z'); for t = max(d,1):smpl - ri_d = Z'*iF(:,:,t)*v(:,t); + ri_d = zeros(mm,1); + di = flipud(data_index{t})'; + for i = di + if Fi(i,t) > crit + ri_d = Z(i,:)'/Fi(i,t)*v(i,t)+ri_d-Ki(:,i,t)'*ri_d/Fi(i,t)*Z(i,:)'; + end + end % calculate eta_tm1t eta_tm1t = QRt*ri_d; % calculate decomposition Ttok = eye(mm,mm); + AAA = P1(:,:,t)*Z'*ZRQinv*Z*R; for h = 1:nk + BBB = Ttok*AAA; for j=1:rr - eta=zeros(rr,1); - eta(j) = eta_tm1t(j); - decomp(h,:,j,t+h) = T^(h-1)*P(:,:,t)*Z'*ZRQinv*Z*R*eta; + decomp(h,:,j,t+h) = eta_tm1t(j)*BBB(:,j); end + Ttok = T*Ttok; end end end -