MUQ  0.4.3
KalmanFilter.h
Go to the documentation of this file.
1 #ifndef KALMANFILTER_H
2 #define KALMANFILTER_H
3 
6 
7 #include <Eigen/Core>
8 
9 #include <memory>
10 
11 
12 namespace muq
13 {
14 namespace Inference
15 {
16 
18  {
19 
20  public:
21 
28  static std::pair<Eigen::VectorXd, Eigen::MatrixXd> Analyze(std::pair<Eigen::VectorXd, Eigen::MatrixXd> const& dist,
29  std::shared_ptr<muq::Modeling::LinearOperator> H,
30  Eigen::Ref<const Eigen::VectorXd> const& obsMean,
31  Eigen::Ref<const Eigen::MatrixXd> const& obsCov);
32 
36  template<typename MatrixType>
37  static std::pair<Eigen::VectorXd, Eigen::MatrixXd> Analyze(std::pair<Eigen::VectorXd, Eigen::MatrixXd> const& dist,
38  MatrixType const& H,
39  Eigen::Ref<const Eigen::VectorXd> const& obsMean,
40  Eigen::Ref<const Eigen::MatrixXd> const& obsCov)
41  {
42  return Analyze(dist, muq::Modeling::LinearOperator::Create(H), obsMean, obsCov);
43  };
44 
45 
46  private:
47 
48  static Eigen::MatrixXd ComputeGain(Eigen::MatrixXd const& HP,
49  std::shared_ptr<muq::Modeling::LinearOperator> H,
50  Eigen::Ref<const Eigen::MatrixXd> const& obsCov);
51 
52 
53  }; // class KalmanFilter
54 
55 } // namespace Inference
56 } // namespace muq
57 
58 #endif
static std::pair< Eigen::VectorXd, Eigen::MatrixXd > Analyze(std::pair< Eigen::VectorXd, Eigen::MatrixXd > const &dist, std::shared_ptr< muq::Modeling::LinearOperator > H, Eigen::Ref< const Eigen::VectorXd > const &obsMean, Eigen::Ref< const Eigen::MatrixXd > const &obsCov)
static std::pair< Eigen::VectorXd, Eigen::MatrixXd > Analyze(std::pair< Eigen::VectorXd, Eigen::MatrixXd > const &dist, MatrixType const &H, Eigen::Ref< const Eigen::VectorXd > const &obsMean, Eigen::Ref< const Eigen::MatrixXd > const &obsCov)
Definition: KalmanFilter.h:37
static Eigen::MatrixXd ComputeGain(Eigen::MatrixXd const &HP, std::shared_ptr< muq::Modeling::LinearOperator > H, Eigen::Ref< const Eigen::MatrixXd > const &obsCov)