EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::roots::Principal Struct Reference

Principal axes: \( U \Lambda^{1/2} \), the eigenvectors of \( P = U \Lambda U^T \) scaled by the roots of their eigenvalues, largest first, with a negative eigenvalue taken as zero, so that it never fails. More...

#include <EmrysFilter/Distributions/Roots.h>

Public Types

template<typename Scalar>
using Report = ClampReport
 The report: the eigenvalues taken as zero.

Public Member Functions

template<typename Derived>
internal::SquareMatrixOf< Derived > root (Eigen::MatrixBase< Derived > const &cov) const
template<typename Derived, typename Sink>
internal::SquareMatrixOf< Derived > root (Eigen::MatrixBase< Derived > const &cov, Sink &&sink) const
template<typename Derived>
internal::SquareMatrixOf< Derived > rootFromFactor (Eigen::MatrixBase< Derived > const &factor) const

Static Public Attributes

static constexpr bool canFail = false
 every positive semidefinite part has a root

Detailed Description

Principal axes: \( U \Lambda^{1/2} \), the eigenvectors of \( P = U \Lambda U^T \) scaled by the roots of their eigenvalues, largest first, with a negative eigenvalue taken as zero, so that it never fails.

Each column's entry of largest magnitude is positive, so that the eigenvectors' arbitrary signs do not move the points. From a factor it takes the singular value decomposition of its triangular factor, \( L = U \Sigma V^T \), so the covariance is never formed. The points then lie along the directions of greatest and least spread, whatever the order of the coordinates.

Its report is a ClampReport of the eigenvalues taken as zero.

See also
principal(), Golub and Van Loan (2013), symmetric eigendecomposition, SVD

Member Function Documentation

◆ root() [1/2]

template<typename Derived>
internal::SquareMatrixOf< Derived > Emrys::roots::Principal::root ( Eigen::MatrixBase< Derived > const & cov) const
inlinenodiscard
Returns
the principal root of cov, of which only the lower triangle is read

◆ root() [2/2]

template<typename Derived, typename Sink>
internal::SquareMatrixOf< Derived > Emrys::roots::Principal::root ( Eigen::MatrixBase< Derived > const & cov,
Sink && sink ) const
inlinenodiscard
Returns
the principal root of cov, calling sink with the ClampReport

◆ rootFromFactor()

template<typename Derived>
internal::SquareMatrixOf< Derived > Emrys::roots::Principal::rootFromFactor ( Eigen::MatrixBase< Derived > const & factor) const
inlinenodiscard
Returns
the principal root of \( F F^T \) for factor, from its singular value decomposition

The documentation for this struct was generated from the following file:
  • EmrysFilter/Distributions/Roots.h