コード例 #1
0
void test_covariance_transform(PointSet<Point, Dim>& point_set, int dim)
{
    fl::UnscentedTransform ut;

    typename fl::Gaussian<Point>::SecondMoment cov;
    cov.setRandom(dim, dim);
    cov *= cov.transpose();

    Point a = Point::Random(dim);

    fl::Gaussian<Point> gaussian;
    gaussian.dimension(dim);
    gaussian.mean(a);
    gaussian.covariance(cov);

    EXPECT_NO_THROW(ut.forward(gaussian, point_set));

    EXPECT_TRUE(
        fl::are_similar(
            ( point_set.centered_points() *
              point_set.covariance_weights_vector().asDiagonal() *
              point_set.centered_points().transpose() ),
            cov));
}