include modifications for parallelisation.

merge-particles-into-master^2
Frédéric Karamé 2018-06-28 09:22:34 +02:00
parent a299c04d7e
commit 713e3ffcfb
1 changed files with 10 additions and 8 deletions

View File

@ -102,15 +102,17 @@ ks = 0 ;
StateParticles = bsxfun(@plus,StateVectorVarianceSquareRoot*randn(state_variance_rank,number_of_particles),StateVectorMean); StateParticles = bsxfun(@plus,StateVectorVarianceSquareRoot*randn(state_variance_rank,number_of_particles),StateVectorMean);
SampleWeights = ones(1,number_of_particles)/number_of_particles ; SampleWeights = ones(1,number_of_particles)/number_of_particles ;
for t=1:sample_size for t=1:sample_size
for i=1:number_of_particles obs=Y(:,t);
[StateParticles(:,i),SampleWeights(i),flag] = ... flag = zeros(number_of_particles) ;
conditional_filter_proposal(ReducedForm,Y(:,t),StateParticles(:,i),SampleWeights(i),Q_lower_triangular_cholesky,H_lower_triangular_cholesky,H,ParticleOptions,ThreadsOptions,normconst2) ; parfor i=1:number_of_particles
if flag==1 [StateParticles(:,i),SampleWeights(i),flag(i)] = ...
LIK=-Inf; conditional_filter_proposal(ReducedForm,obs,StateParticles(:,i),SampleWeights(i),Q_lower_triangular_cholesky,H_lower_triangular_cholesky,H,ParticleOptions,ThreadsOptions,normconst2) ;
lik(t)=-Inf;
return
end
end end
if sum(flag)~=0
LIK=-Inf;
lik(t)=-Inf;
return
end
SumSampleWeights = sum(SampleWeights) ; SumSampleWeights = sum(SampleWeights) ;
lik(t) = log(SumSampleWeights) ; lik(t) = log(SumSampleWeights) ;
SampleWeights = SampleWeights./SumSampleWeights ; SampleWeights = SampleWeights./SumSampleWeights ;