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