GNSS-SDR  0.0.19
An Open Source GNSS Software Defined Receiver
bayesian_estimation.h
Go to the documentation of this file.
1 /*!
2  * \file bayesian_estimation.h
3  * \brief Interface of a library with Bayesian noise statistic estimation
4  *
5  * Bayesian_estimator is a Bayesian estimator which attempts to estimate
6  * the properties of a stochastic process based on a sequence of
7  * discrete samples of the sequence.
8  *
9  * [1]: LaMountain, Gerald, VilĂ -Valls, Jordi, Closas, Pau, "Bayesian
10  * Covariance Estimation for Kalman Filter based Digital Carrier
11  * Synchronization," Proceedings of the 31st International Technical Meeting
12  * of the Satellite Division of The Institute of Navigation
13  * (ION GNSS+ 2018), Miami, Florida, September 2018, pp. 3575-3586.
14  * https://doi.org/10.33012/2018.15911
15  *
16  * \authors <ul>
17  * <li> Gerald LaMountain, 2018. gerald(at)ece.neu.edu
18  * <li> Jordi Vila-Valls 2018. jvila(at)cttc.es
19  * </ul>
20  * -----------------------------------------------------------------------------
21  *
22  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
23  * This file is part of GNSS-SDR.
24  *
25  * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
26  * SPDX-License-Identifier: GPL-3.0-or-later
27  *
28  * -----------------------------------------------------------------------------
29  */
30 
31 #ifndef GNSS_SDR_BAYESIAN_ESTIMATION_H
32 #define GNSS_SDR_BAYESIAN_ESTIMATION_H
33 
34 #if ARMA_NO_BOUND_CHECKING
35 #define ARMA_NO_DEBUG 1
36 #endif
37 
38 #include <armadillo>
39 #include <gnuradio/gr_complex.h>
40 
41 /** \addtogroup Tracking
42  * \{ */
43 /** \addtogroup Tracking_libs
44  * \{ */
45 
46 
47 /*! \brief Bayesian_estimator is an estimator of noise characteristics (i.e. mean, covariance)
48  *
49  * Bayesian_estimator is an estimator which performs estimation of noise characteristics from
50  * a sequence of identically and independently distributed (IID) samples of a stationary
51  * stochastic process by way of Bayesian inference using conjugate priors. The posterior
52  * distribution is assumed to be Gaussian with mean \mathbf{\mu} and covariance \hat{\mathbf{C}},
53  * which has a conjugate prior given by a normal-inverse-Wishart distribution with paramemters
54  * \mathbf{\mu}_{0}, \kappa_{0}, \nu_{0}, and \mathbf{\Psi}.
55  *
56  * [1] TODO: Ref1
57  *
58  */
59 
61 {
62 public:
64  explicit Bayesian_estimator(int ny);
65  Bayesian_estimator(const arma::vec& mu_prior_0, int kappa_prior_0, int nu_prior_0, const arma::mat& Psi_prior_0);
66  ~Bayesian_estimator() = default;
67 
68  void init(const arma::mat& mu_prior_0, int kappa_prior_0, int nu_prior_0, const arma::mat& Psi_prior_0);
69 
70  void update_sequential(const arma::vec& data);
71  void update_sequential(const arma::vec& data, const arma::vec& mu_prior_0, int kappa_prior_0, int nu_prior_0, const arma::mat& Psi_prior_0);
72 
73  arma::mat get_mu_est() const;
74  arma::mat get_Psi_est() const;
75 
76 private:
77  arma::vec mu_est;
78  arma::mat Psi_est;
79  arma::vec mu_prior;
80  arma::mat Psi_prior;
81  int kappa_prior;
82  int nu_prior;
83 };
84 
85 
86 /** \} */
87 /** \} */
88 #endif // GNSS_SDR_BAYESIAN_ESTIMATION_H
Bayesian_estimator is an estimator of noise characteristics (i.e. mean, covariance) ...