diff --git a/matlab/DiffuseKalmanSmoother1_Z.m b/matlab/DiffuseKalmanSmoother1_Z.m index 30a4d8bfa3671b5b85f680b51ce10925210baa87..1beeba5a29c2f59d494312baf47064950e85ece6 100644 --- a/matlab/DiffuseKalmanSmoother1_Z.m +++ b/matlab/DiffuseKalmanSmoother1_Z.m @@ -83,7 +83,7 @@ while rank(Pinf(:,:,t+1),crit1) & t<smpl Linf(:,:,t) = T - Kinf(:,:,t)*Z; Fstar(:,:,t) = Z*Pstar(:,:,t)*Z'; Kstar(:,:,t) = (T*Pstar(:,:,t)*Z'-Kinf(:,:,t)*Fstar(:,:,t))*iFinf(:,:,t); - Pstar(:,:,t+1) = T*Pstar(:,:,t)*T'-T*Pstar(:,:,t)*Z'*Kinf(:,:,t)'-Kinf(:,:,t)*F*Kstar(:,:,t) + QQ; + Pstar(:,:,t+1) = T*Pstar(:,:,t)*T'-T*Pstar(:,:,t)*Z'*Kinf(:,:,t)'-Kinf(:,:,t)*F*Kstar(:,:,t)' + QQ; Pinf(:,:,t+1) = T*Pinf(:,:,t)*T'-T*Pinf(:,:,t)*Z'*Kinf(:,:,t)'; end d = t; @@ -99,7 +99,7 @@ while notsteady & t<smpl t = t+1; v(:,t) = Y(:,t) - Z*a(:,t); P(:,:,t)=tril(P(:,:,t))+transpose(tril(P(:,:,t),-1)); - F = Z*P(:,:,t)*Z' + F = Z*P(:,:,t)*Z'; if rcond(F) < crit return end @@ -150,7 +150,7 @@ if d etahat(:,t) = QRt*r0(:,t); end r0_0 = Linf(:,:,1)'*r0(:,1); - r1_0 = Z'*(iFinf(:,:,1)*v(:,1)-Kstar(:,:,1)*r0(:,1)) + Linf(:,:,1)'*r1(:,1); + r1_0 = Z'*(iFinf(:,:,1)*v(:,1)-Kstar(:,:,1)'*r0(:,1)) + Linf(:,:,1)'*r1(:,1); alphahat(:,1) = a(:,1) + Pstar(:,:,1)*r0_0 + Pinf(:,:,1)*r1_0; etahat(:,1) = QRt*r0(:,1); else diff --git a/matlab/DiffuseKalmanSmoother3_Z.m b/matlab/DiffuseKalmanSmoother3_Z.m index 942a3237f3412691a5a834c8dd0379a7cb3ed290..343099efb5a771ecbf0cd0f81d6d8a942d6131d3 100644 --- a/matlab/DiffuseKalmanSmoother3_Z.m +++ b/matlab/DiffuseKalmanSmoother3_Z.m @@ -253,7 +253,7 @@ if d L0(:,:,i,1)'*r0_0 + Linf(:,:,i,1)'*r1_0; r0_0 = Linf(:,:,i,1)'*r0_0; elseif Fstar(i,1) > crit, % step needed when Finf=0 - r0_0=transpose(Z(i,:))/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0; + r0_0=Z(i,:)'/Fstar(i,1)*v(i,1)+Li(:,:,i,1)'*r0_0; end end alphahat(:,1) = a1(:,1) + Pstar1(:,:,1)*r0_0 + Pinf1(:,:,1)*r1_0;