use nalgebra::{Matrix1, Vector1};
use bayes_estimate::models::{ExtendedLinearObserver, ExtendedLinearPredictor, KalmanState};
use bayes_estimate::noise::CorrelatedNoise;
fn main() {
let mut estimate = KalmanState {
x: Vector1::new(10.), X: Matrix1::new(0.), };
println!("Initial x{:.1} X{:.2}", estimate.x, estimate.X);
let my_predict_model = Matrix1::new(1.);
let my_predict_noise = CorrelatedNoise {
Q: Matrix1::new(1.),
};
let predicted_x = my_predict_model * estimate.x;
estimate
.predict(&my_predict_model, &predicted_x, &my_predict_noise)
.unwrap();
println!("Predict x{:.1} X{:.2}", estimate.x, estimate.X);
let z = Vector1::new(11.);
let my_observe_model = Matrix1::new(1.);
let my_observe_noise = CorrelatedNoise {
Q: Matrix1::new(2.),
};
let innovation = z - &my_observe_model * &estimate.x;
estimate
.observe_innovation(&innovation, &my_observe_model, &my_observe_noise)
.unwrap();
println!("Observe x{:.1} X{:.2}", estimate.x, estimate.X);
}