33 #ifndef EXOTICA_AICO_SOLVER_INCREMENTAL_GAUSSIAN_H_
34 #define EXOTICA_AICO_SOLVER_INCREMENTAL_GAUSSIAN_H_
36 #include <Eigen/Dense>
46 Eigen::VectorXd
T = Eigen::VectorXd(0);
47 Eigen::VectorXd
dX = Eigen::VectorXd(0);
48 Eigen::MatrixXd
S = Eigen::MatrixXd(0, 0);
77 void add(
const Eigen::Ref<const Eigen::VectorXd>& x)
88 double f = 1. /
W / (
W - 1.);
90 for (
int r = 0;
r <
D; ++
r)
92 for (
int c = 0; c <
D; ++c)
104 void add(
double& W_,
const Eigen::Ref<const Eigen::VectorXd>& T_,
105 const Eigen::Ref<const Eigen::VectorXd>& S_)
114 dX = T_ / W_ -
T /
W;
116 double f =
W * W_ / (
W + W_);
117 for (
int r = 0;
r <
D; ++
r)
119 for (
int c = 0; c <
D; ++c)
128 inline void addw(
double w,
const Eigen::Ref<const Eigen::VectorXd>& x)
140 double f =
W * w / (
W + w);
141 for (
int r = 0;
r <
D; ++
r)
143 for (
int c = 0; c <
D; ++c)
157 void cov(Eigen::MatrixXd& sig)
161 void covp(Eigen::MatrixXd& sig)
168 #endif // EXOTICA_AICO_SOLVER_INCREMENTAL_GAUSSIAN_H_