Properly terminate nonlinear_kalman_filter if non-positive definite matrices are encountered
Otherwise, crashes can happen during mode-findingrm-particles^2
parent
285d5c1711
commit
ddc5b5b665
|
@ -152,8 +152,18 @@ for t=1:sample_size
|
|||
KalmanFilterGain = PredictedStateAndObservedCovariance/PredictedObservedVariance;
|
||||
StateVectorMean = PredictedStateMean + KalmanFilterGain*PredictionError;
|
||||
StateVectorVariance = PredictedStateVariance - KalmanFilterGain*PredictedObservedVariance*KalmanFilterGain';
|
||||
StateVectorVarianceSquareRoot = chol(StateVectorVariance)';
|
||||
PredictedObservedVarianceSquareRoot = chol(PredictedObservedVariance)' ;
|
||||
[StateVectorVarianceSquareRoot, p]= chol(StateVectorVariance,'lower');
|
||||
if p
|
||||
LIK=-Inf;
|
||||
lik(t)=-Inf;
|
||||
return
|
||||
end
|
||||
[PredictedObservedVarianceSquareRoot, p]= chol(PredictedObservedVariance,'lower');
|
||||
if p
|
||||
LIK=-Inf;
|
||||
lik(t)=-Inf;
|
||||
return
|
||||
end
|
||||
end
|
||||
lik(t) = log( probability2(0,PredictedObservedVarianceSquareRoot,PredictionError) ) ;
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue