include modifications for parallelisation.

rm-particles^2
Frédéric Karamé 2018-06-28 09:22:34 +02:00
parent fb7ec278d6
commit 66867386ef
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);
SampleWeights = ones(1,number_of_particles)/number_of_particles ;
for t=1:sample_size
for i=1:number_of_particles
[StateParticles(:,i),SampleWeights(i),flag] = ...
conditional_filter_proposal(ReducedForm,Y(:,t),StateParticles(:,i),SampleWeights(i),Q_lower_triangular_cholesky,H_lower_triangular_cholesky,H,ParticleOptions,ThreadsOptions,normconst2) ;
if flag==1
LIK=-Inf;
lik(t)=-Inf;
return
end
obs=Y(:,t);
flag = zeros(number_of_particles) ;
parfor i=1:number_of_particles
[StateParticles(:,i),SampleWeights(i),flag(i)] = ...
conditional_filter_proposal(ReducedForm,obs,StateParticles(:,i),SampleWeights(i),Q_lower_triangular_cholesky,H_lower_triangular_cholesky,H,ParticleOptions,ThreadsOptions,normconst2) ;
end
if sum(flag)~=0
LIK=-Inf;
lik(t)=-Inf;
return
end
SumSampleWeights = sum(SampleWeights) ;
lik(t) = log(SumSampleWeights) ;
SampleWeights = SampleWeights./SumSampleWeights ;