GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
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 parameters
54 * \mathbf{\mu}_{0}, \kappa_{0}, \nu_{0}, and \mathbf{\Psi}.
55 *
56 * [1] TODO: Ref1
57 *
58 */
59
60class Bayesian_estimator
61{
62public:
63 Bayesian_estimator();
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
76private:
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