38 InputMask extraInputs = ExtraInputs::None);
45 InputMask extraInputs = ExtraInputs::None);
54 Eigen::MatrixXd
const& obj,
56 InputMask extraInputs = ExtraInputs::None);
63 virtual Eigen::MatrixXd
ApplyCovariance(Eigen::Ref<const Eigen::MatrixXd>
const& x)
const override;
64 virtual Eigen::MatrixXd
ApplyPrecision(Eigen::Ref<const Eigen::MatrixXd>
const& x)
const override;
66 virtual Eigen::MatrixXd
ApplyCovSqrt(Eigen::Ref<const Eigen::MatrixXd>
const& x)
const override;
67 virtual Eigen::MatrixXd
ApplyPrecSqrt(Eigen::Ref<const Eigen::MatrixXd>
const& x)
const override;
91 std::shared_ptr<Gaussian>
Condition(Eigen::MatrixXd
const& obsMat,
92 Eigen::VectorXd
const& data,
93 Eigen::MatrixXd
const& obsCov)
const;
Defines an abstract Gaussian class.@seealso Gaussian.
Gaussian::InputMask inputTypes
What form do the extra inputs take? Just the mean, or the mean and covariance?
Eigen::MatrixXd GetPrecision() const
Gaussian::Mode mode
Have we specified the covariance or the precision.
void SetCovariance(Eigen::MatrixXd const &newCov)
Set the covariance matrix.
void SetPrecision(Eigen::MatrixXd const &newPrec)
Set the precision matrix.
static Gaussian::Mode ModeFromExtras(InputMask extraInputs)
Gaussian::InputMask GetInputTypes() const
static void CheckInputTypes(InputMask extraInputs, Mode mode)
virtual Eigen::MatrixXd ApplyCovSqrt(Eigen::Ref< const Eigen::MatrixXd > const &x) const override
void ComputeNormalization()
Compute the distribution's scaling constant.
Eigen::LLT< Eigen::MatrixXd > sqrtCovPrec
std::shared_ptr< Gaussian > Condition(Eigen::MatrixXd const &obsMat, Eigen::VectorXd const &data, Eigen::MatrixXd const &obsCov) const
Returns a new Gaussian distribution conditioned on a linear observation.
static Eigen::VectorXi GetExtraSizes(unsigned dim, InputMask extraInputs)
Mode
Are we specifying the mean, covariance matrix, or precision matrix.
@ Precision
We are specifying the precision.
@ Covariance
We are specifying the covariance.
Gaussian(unsigned int dim, InputMask extraInputs=ExtraInputs::None)
virtual double LogDeterminant() const override
virtual Eigen::MatrixXd ApplyPrecSqrt(Eigen::Ref< const Eigen::MatrixXd > const &x) const override
double logDet
The log determinant of the covariance matrix.
virtual Eigen::MatrixXd ApplyCovariance(Eigen::Ref< const Eigen::MatrixXd > const &x) const override
virtual Eigen::MatrixXd ApplyPrecision(Eigen::Ref< const Eigen::MatrixXd > const &x) const override
Eigen::MatrixXd GetCovariance() const
Get the covariance.
void ResetHyperparameters(ref_vector< Eigen::VectorXd > const ¶ms) override
virtual ~Gaussian()=default
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...