5 #ifndef ESTIMATED_GAUSSIAN_HEADER
6 #define ESTIMATED_GAUSSIAN_HEADER
8 #include "GlobalHeader.h"
19 inline void Reset(
float pm = 1000.0f,
float ps = 1000.0f,
float rm = 0.01f,
float rs = 0.01f) {
24 for (
int i = 0; i < N; i++) {
33 void Update(
const float *value);
35 void SetValues(
const float *m,
const float *s);
37 float mean[N], sigma[N];
44 float pm,
float ps,
float rm,
float rs) {
45 Reset(pm, ps, rm, rs);
56 float minFactor = 0.001f;
59 K = pMean / (pMean + rMean);
63 for (
int i = 0; i < N; i++) {
64 mean[i] += K * (value[i] - mean[i]);
66 pMean = pMean * rMean / (pMean + rMean);
69 K = pSigma / (pSigma + rSigma);
73 for (
int i = 0; i < N; i++) {
74 float sigma2 = K * (mean[i] - value[i]) * (mean[i] - value[i]) +
75 (1.0f - K) * sigma[i] * sigma[i];
76 sigma[i] = sqrtf(sigma2);
81 pSigma = pSigma * rSigma / (pSigma + rSigma);
85 memcpy(mean, m,
sizeof(
float) * N);
86 memcpy(sigma, s,
sizeof(
float) * N);
Definition: EstimatedGaussianDistribution.h:10
void Update(const float *value)
Definition: EstimatedGaussianDistribution.h:52
void Reset(float pm=1000.0f, float ps=1000.0f, float rm=0.01f, float rs=0.01f)
Definition: EstimatedGaussianDistribution.h:19