Skip to content
Snippets Groups Projects
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
Branches
No related tags found
No related merge requests found
...@@ -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));
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment