/MultivariateNormal

Arduino library for sampling from a multivariate normal distribution

Primary LanguageC++GNU Lesser General Public License v3.0LGPL-3.0

MultivariateNormal

GitHub version arduino-library-badge

Arduino library for sampling from a multivariate normal distribution

API:

Example initialization:

Vector2d mean;
mean << 0,
        0;

Matrix2d covar;
covar << 10, 0,
          0, 1;

EigenMultivariateNormal<double> multVNorm(mean, covar);

To take N number of samples from the distribution (Note that the distribution has M number of dimensions):

Matrix<double, N, M> samples = multVNorm.samples(N).transpose();

To evaluate the probability of a given vector against the distribution:

double prob = multVNorm.eval(vector);

Credit:

https://github.com/beniz/eigenmvn https://stackoverflow.com/a/41548972/9860973