|
|
using | Scalar = typename Source::Scalar |
| | the scalar type
|
|
using | Index = Eigen::Index |
| | Eigen's index type.
|
|
using | SpaceType = SubSpace |
| | the selected block's space
|
|
using | ParamsType = GaussianParams<SubSpace, Scalar> |
| | what copy() returns
|
|
using | MomentsType = typename ParamsType::MomentsType |
| | the mean and covariance together
|
|
using | VectorType = typename ParamsType::VectorType |
| | a value, such as the mean
|
|
using | MatrixType = typename ParamsType::MatrixType |
| | a matrix over differences
|
|
using | ResolvedType = typename internal::SelectionHolder<Source, Selection, SubSpace>::ResolvedType |
| | the selection, resolved
|
|
using | IndexVectorType = decltype(ResolvedType::indices) |
| | The selected mean entries' indices.
|
|
using | DifferenceIndexVectorType = decltype(ResolvedType::differenceIndices) |
| | The selected covariance rows' indices.
|
|
|
static constexpr int | ValueDimensionAtCompileTime = valueDimensionAtCompileTime<SubSpace> |
| | the length of a value, or Eigen::Dynamic
|
|
static constexpr int | MaxValueDimensionAtCompileTime = maxValueDimensionAtCompileTime<SubSpace> |
| | a bound on the length of a value, or Eigen::Dynamic
|
|
static constexpr int | DifferenceDimensionAtCompileTime = valueDimensionAtCompileTime<DifferenceSpace<SubSpace>> |
| | the length of a difference and the rows of the covariance, or Eigen::Dynamic
|
| static constexpr int | MaxDifferenceDimensionAtCompileTime |
| | a bound on the length of a difference, or Eigen::Dynamic
|
|
static constexpr bool | IsInfoForm = false |
| | a block of the covariance, not of the precision [gaussian-forms]
|
|
static constexpr bool | IsSqrtForm = false |
| | a block of the covariance whole, not of a factor [gaussian-forms]
|
template<typename Source, typename Selection, typename SubSpace>
class Emrys::GaussianMarginal< Source, Selection, SubSpace >
Read-only view of a subset of the entries of a GaussianParams or Gaussian.
Obtained from GaussianParams::marginal() or Gaussian::marginal(), and held by auto: its Selection is internal, so its type is never spelled, and a function that takes one takes it as a template parameter. Of GaussianParams it checks their shape (values may change underneath it, size may not); of a Gaussian it holds a copy of the view, and so the view's check. A marginal of a mixture or a hybrid gives one per component, which borrows the selection that marginal resolved once, and must not outlive it.
mean() and covarianceLower() return lazy Eigen expressions that must not outlive the marginal. covarianceLower() reads only the source's lower triangle. The dimensions are known at compile time when the selected block's sizes are. It is a GaussianForm, with the four fallible accessors of every form, so code generic over the forms takes it as it takes the other forms' marginals, which are parameters (decisions.md [form-densities]).
- Template Parameters
-
| Source | GaussianParams or Gaussian |
| Selection | an internal::Coordinates of the index sets of the selected block, from idx() for the mean and diffIdx() for the covariance, or an internal::SharedSelection of a selection resolved already |
| SubSpace | space of the selected block |