Commit cdc7f6dd authored by Frédéric Karamé's avatar Frédéric Karamé
Browse files

Modify the weights to prevent crash in the cholesky of the covariance.

parent 7235de43
...@@ -92,14 +92,14 @@ if isempty(H) ...@@ -92,14 +92,14 @@ if isempty(H)
H = 0; H = 0;
H_lower_triangular_cholesky = 0; H_lower_triangular_cholesky = 0;
else else
H_lower_triangular_cholesky = reduced_rank_cholesky(H)'; H_lower_triangular_cholesky = chol(H)' ; %reduced_rank_cholesky(H)';
end end
% Get initial condition for the state vector. % Get initial condition for the state vector.
StateVectorMean = ReducedForm.StateVectorMean; StateVectorMean = ReducedForm.StateVectorMean;
StateVectorVarianceSquareRoot = reduced_rank_cholesky(ReducedForm.StateVectorVariance)'; StateVectorVarianceSquareRoot = chol(ReducedForm.StateVectorVariance)';%reduced_rank_cholesky(ReducedForm.StateVectorVariance)';
state_variance_rank = size(StateVectorVarianceSquareRoot,2); state_variance_rank = size(StateVectorVarianceSquareRoot,2);
Q_lower_triangular_cholesky = reduced_rank_cholesky(Q)'; Q_lower_triangular_cholesky = chol(Q)'; %reduced_rank_cholesky(Q)';
% Initialization of the likelihood. % Initialization of the likelihood.
const_lik = (2*pi)^(number_of_observed_variables/2) ; const_lik = (2*pi)^(number_of_observed_variables/2) ;
...@@ -126,12 +126,16 @@ for t=1:sample_size ...@@ -126,12 +126,16 @@ for t=1:sample_size
1/number_of_particles,1/number_of_particles,ReducedForm,ThreadsOptions) ; 1/number_of_particles,1/number_of_particles,ReducedForm,ThreadsOptions) ;
SampleWeights = IncrementalWeights/number_of_particles ; SampleWeights = IncrementalWeights/number_of_particles ;
end end
SampleWeights = SampleWeights + 1e-6*ones(size(SampleWeights,1),1) ;
SumSampleWeights = sum(SampleWeights) ; SumSampleWeights = sum(SampleWeights) ;
lik(t) = log(SumSampleWeights) ; lik(t) = log(SumSampleWeights) ;
SampleWeights = SampleWeights./SumSampleWeights ; SampleWeights = SampleWeights./SumSampleWeights ;
StateVectorMean = StateParticles*SampleWeights ; StateVectorMean = StateParticles*SampleWeights ;
temp = bsxfun(@minus,StateParticles,StateVectorMean) ; temp = bsxfun(@minus,StateParticles,StateVectorMean) ;
StateVectorVarianceSquareRoot = reduced_rank_cholesky( bsxfun(@times,SampleWeights',temp)*temp' )'; %disp(SampleWeights)
%disp(StateParticles)
%disp(StateVectorMean)
StateVectorVarianceSquareRoot = chol( bsxfun(@times,SampleWeights',temp)*temp' )';%reduced_rank_cholesky( bsxfun(@times,SampleWeights',temp)*temp' )';
end end
LIK = -sum(lik(start:end)); LIK = -sum(lik(start:end));
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment