0.5.0
Loading...
Searching...
No Matches
NAV::Ambiguity::internal Namespace Reference

Functions

template<typename DerivedA, typename DerivedQ, typename DerivedL>
double calcChi2_bootstrap (const Eigen::MatrixBase< DerivedA > &a, const Eigen::MatrixBase< DerivedQ > &Q, const Eigen::MatrixBase< DerivedL > &L_LTDL_Q, const Eigen::Index &ncand=2)
 Calculates $ \chi^2 $, the size of the ellipsoidal region, via bootrapping.
template<typename DerivedD>
double calcChi2_volume (const Eigen::MatrixBase< DerivedD > &D, const Eigen::Index &ncand=2, double factor=1.5)
 Calculates $ \chi^2 $, the size of the ellipsoidal region, via volume of the ellipsoidal region.
template<typename DerivedL, typename DerivedZ, typename DerivedA>
void gauss (Eigen::MatrixBase< DerivedL > &L, Eigen::Index i, Eigen::Index j, Eigen::MatrixBase< DerivedA > &a, Eigen::MatrixBase< DerivedZ > &Z, Eigen::Index n)
 [11] Chang 2005, Integer Gauss Transformations algorithm
template<typename DerivedL, typename DerivedD, typename DerivedA, typename DerivedZ>
void permute (Eigen::MatrixBase< DerivedL > &L, Eigen::MatrixBase< DerivedD > &D, Eigen::Index k, double delta, Eigen::MatrixBase< DerivedA > &a, Eigen::MatrixBase< DerivedZ > &Z, Eigen::Index n)
 [11] Chang 2005, Permutations algorithm

Function Documentation

◆ calcChi2_bootstrap()

template<typename DerivedA, typename DerivedQ, typename DerivedL>
double NAV::Ambiguity::internal::calcChi2_bootstrap ( const Eigen::MatrixBase< DerivedA > & a,
const Eigen::MatrixBase< DerivedQ > & Q,
const Eigen::MatrixBase< DerivedL > & L_LTDL_Q,
const Eigen::Index & ncand = 2 )

Calculates $ \chi^2 $, the size of the ellipsoidal region, via bootrapping.

$ \boldsymbol{\check{z}}_B $ is a good candidate for setting the size of the search space ([48] Springer Handbook GNSS, ch. 23.4.2, eq. 23.58)

\begin{equation} \label{eq:eq-GNSS-chi2-bootstrap}
  \chi^2 = || \boldsymbol{\hat{z}} - \boldsymbol{\check{z}}_B ||_{\mathbf{Q}_{z}}^2 = (\boldsymbol{\hat{z}} - \boldsymbol{\check{z}}_B)^T \mathbf{Q}_{z}^{-1} (\boldsymbol{\hat{z}} - \boldsymbol{\check{z}}_B)
\end{equation}

Parameters
[in]aFloat ambiguity vector [cycles]
[in]QVariance/covariance matrix of the ambiguities
[in]L_LTDL_QLower-triangular matrix from the L^T * D * L decomposition of Q_z
[in]ncandRequested number of candidates (default = 2)
Returns
Size of the ellipsoidal region $ \chi^2 $
Note
See [13] de Jonge 1996, ch. 4.11

Definition at line 80 of file EllipsoidalRegion.hpp.

◆ calcChi2_volume()

template<typename DerivedD>
double NAV::Ambiguity::internal::calcChi2_volume ( const Eigen::MatrixBase< DerivedD > & D,
const Eigen::Index & ncand = 2,
double factor = 1.5 )

Calculates $ \chi^2 $, the size of the ellipsoidal region, via volume of the ellipsoidal region.

The volume, expressed in $ [\text{cycles}^n] $, of the ellipsoidal region is ([13] de Jonge 1996, ch. 4.9, eq. 4.19)

\begin{equation} \label{eq:eq-GNSS-chi2-volume}
  E_n = \chi^n \sqrt{|Q_{\hat{a}}|} V_n
\end{equation}

The volume function is ([13] de Jonge 1996, ch. 4.9, eq. 4.20)

\begin{equation} \label{eq:eq-GNSS-chi2-volume-function}
  V_n = \frac{2}{n} \frac{\pi^{\frac{n}{2}}}{\Gamma \left( \frac{n}{2} \right)}
\end{equation}

The determinant of the vairance covariance matrix is ([13] de Jonge 1996, ch. 4.9, eq. 4.24)

\begin{equation} \label{eq:eq-GNSS-chi2-volume-detQ}
  |Q_{\hat{a}}| = \prod_{i=1}^{n} \sigma^2_{\hat{a}_{i|i+1, \dots, n}}
\end{equation}

The volume $ E_n $ is good indicator for the number of candidates ([13] de Jonge 1996, ch. 4.10)

\begin{equation} \label{eq:eq-GNSS-chi2-volume-cand}
  n_{\text{cand}} = \text{(int)}E_n
\end{equation}

Parameters
[in]DVector containing all the variances of the ambiguities (L^T * D * L decomposition)
[in]ncandRequested number of candidates (default = 2)
[in]factorMultiplication factor for the volume of the resulting search ellipsoid (default = 1.5)
Returns
Size of the ellipsoidal region $ \chi^2 $

Definition at line 53 of file EllipsoidalRegion.hpp.

◆ gauss()

template<typename DerivedL, typename DerivedZ, typename DerivedA>
void NAV::Ambiguity::internal::gauss ( Eigen::MatrixBase< DerivedL > & L,
Eigen::Index i,
Eigen::Index j,
Eigen::MatrixBase< DerivedA > & a,
Eigen::MatrixBase< DerivedZ > & Z,
Eigen::Index n )

[11] Chang 2005, Integer Gauss Transformations algorithm

Parameters
[in,out]L(L^T * D * L) decomposition of Q_z
[in]iRow index
[in]jCol index
[in,out]aFloat ambiguity vector [cycles]
[in,out]ZDecorrelation transformation matrix
[in]nDimension

Definition at line 40 of file Decorrelation.hpp.

◆ permute()

template<typename DerivedL, typename DerivedD, typename DerivedA, typename DerivedZ>
void NAV::Ambiguity::internal::permute ( Eigen::MatrixBase< DerivedL > & L,
Eigen::MatrixBase< DerivedD > & D,
Eigen::Index k,
double delta,
Eigen::MatrixBase< DerivedA > & a,
Eigen::MatrixBase< DerivedZ > & Z,
Eigen::Index n )

[11] Chang 2005, Permutations algorithm

Parameters
[in,out]L(L^T * D * L) decomposition of Q_z
[in,out]D(L^T * D * L) decomposition of Q_z
[in]kIndex
[in]deltaDelta parameter
[in,out]aFloat ambiguity vector [cycles]
[in,out]ZZ trafo
[in]nDimension

Definition at line 62 of file Decorrelation.hpp.