Added factor and constant and removed factors method

release/4.3a0
Frank Dellaert 2023-01-01 11:22:21 -05:00
parent b463386514
commit 92e2a39c26
2 changed files with 22 additions and 6 deletions

View File

@ -81,12 +81,24 @@ void GaussianMixtureFactor::print(const std::string &s,
} }
/* *******************************************************************************/ /* *******************************************************************************/
const GaussianMixtureFactor::Mixture GaussianMixtureFactor::factors() const { GaussianFactor::shared_ptr GaussianMixtureFactor::factor(
return Mixture(factors_, [](const FactorAndConstant &factor_z) { const DiscreteValues &assignment) const {
return factor_z.factor; return factors_(assignment).factor;
});
} }
/* *******************************************************************************/
double GaussianMixtureFactor::constant(const DiscreteValues &assignment) const {
return factors_(assignment).constant;
}
/* *******************************************************************************/
// NOTE(dellaert): this was not used and is expensive.
// const GaussianMixtureFactor::Mixture GaussianMixtureFactor::factors() const {
// return Mixture(factors_, [](const FactorAndConstant &factor_z) {
// return factor_z.factor;
// });
// }
/* *******************************************************************************/ /* *******************************************************************************/
GaussianMixtureFactor::Sum GaussianMixtureFactor::add( GaussianMixtureFactor::Sum GaussianMixtureFactor::add(
const GaussianMixtureFactor::Sum &sum) const { const GaussianMixtureFactor::Sum &sum) const {

View File

@ -151,12 +151,16 @@ class GTSAM_EXPORT GaussianMixtureFactor : public HybridFactor {
void print( void print(
const std::string &s = "GaussianMixtureFactor\n", const std::string &s = "GaussianMixtureFactor\n",
const KeyFormatter &formatter = DefaultKeyFormatter) const override; const KeyFormatter &formatter = DefaultKeyFormatter) const override;
/// @} /// @}
/// @name Standard API /// @name Standard API
/// @{ /// @{
/// Getter for the underlying Gaussian Factor Decision Tree. /// Get factor at a given discrete assignment.
const Mixture factors() const; sharedFactor factor(const DiscreteValues &assignment) const;
/// Get constant at a given discrete assignment.
double constant(const DiscreteValues &assignment) const;
/** /**
* @brief Combine the Gaussian Factor Graphs in `sum` and `this` while * @brief Combine the Gaussian Factor Graphs in `sum` and `this` while