Lydia - Printhead
Loading...
Searching...
No Matches
Statistic Class Reference

#include <xstatistics.h>

Public Member Functions

void add (const float)
 
float average () const
 
void clear ()
 
uint32_t count () const
 
float maximum () const
 
float mean () const
 
float minimum () const
 
float pop_stdev () const
 
 Statistic ()
 
float sum () const
 
float unbiased_stdev () const
 
float variance () const
 

Protected Attributes

uint32_t _cnt
 
float _max
 
float _min
 
float _ssqdif
 
float _sum
 

Detailed Description

Definition at line 46 of file xstatistics.h.

Constructor & Destructor Documentation

◆ Statistic()

Statistic::Statistic ( )

Definition at line 3 of file xstatistics.cpp.

4{
5 clear();
6}
void clear()

Member Function Documentation

◆ add()

void Statistic::add ( const float value)

Definition at line 23 of file xstatistics.cpp.

24{
25 if (_cnt == 0)
26 {
27 _min = value;
28 _max = value;
29 }
30 else
31 {
32 if (value < _min)
33 _min = value;
34 else if (value > _max)
35 _max = value;
36 }
37 _sum += value;
38 _cnt++;
39
40#ifdef STAT_USE_STDEV
41 if (_cnt > 1)
42 {
43 float _store = (_sum / _cnt - value);
44 _ssqdif = _ssqdif + _cnt * _store * _store / (_cnt - 1);
45 // ~10% faster but limits the amount of samples to 65K as _cnt*_cnt overflows
46 // float _store = _sum - _cnt * value;
47 // _ssqdif = _ssqdif + _store * _store / (_cnt*_cnt - _cnt);
48 }
49#endif
50}
float _max
Definition xstatistics.h:71
uint32_t _cnt
Definition xstatistics.h:68
float _sum
Definition xstatistics.h:69
float _min
Definition xstatistics.h:70
float _ssqdif
Definition xstatistics.h:73
Definition xtimer.h:21

◆ average()

float Statistic::average ( ) const

Definition at line 53 of file xstatistics.cpp.

54{
55 if (_cnt == 0)
56 return NAN; // original code returned 0
57 return _sum / _cnt;
58}

◆ clear()

void Statistic::clear ( )

Definition at line 9 of file xstatistics.cpp.

10{
11 _cnt = 0;
12 _sum = 0;
13 _min = 0;
14 _max = 0;
15#ifdef STAT_USE_STDEV
16 _ssqdif = 0.0; // not _ssq but sum of square differences
17 // which is SUM(from i = 1 to N) of
18 // (f(i)-_ave_N)**2
19#endif
20}

◆ count()

uint32_t Statistic::count ( ) const
inline

Definition at line 54 of file xstatistics.h.

54{ return _cnt; }; // zero if empty

◆ maximum()

float Statistic::maximum ( ) const
inline

Definition at line 57 of file xstatistics.h.

57{ return _max; }; // zero if empty

◆ mean()

float Statistic::mean ( ) const

Definition at line 71 of file xstatistics.cpp.

72{
73 if (_cnt == 0)
74 return NAN; // otherwise DIV0 error
75 return this->sum() / _cnt;
76}
float sum() const
Definition xstatistics.h:55

◆ minimum()

float Statistic::minimum ( ) const
inline

Definition at line 56 of file xstatistics.h.

56{ return _min; }; // zero if empty

◆ pop_stdev()

float Statistic::pop_stdev ( ) const

Definition at line 78 of file xstatistics.cpp.

79{
80 if (_cnt == 0)
81 return NAN; // otherwise DIV0 error
82 return sqrt(_ssqdif / _cnt);
83}

◆ sum()

float Statistic::sum ( ) const
inline

Definition at line 55 of file xstatistics.h.

55{ return _sum; }; // zero if empty

◆ unbiased_stdev()

float Statistic::unbiased_stdev ( ) const

Definition at line 85 of file xstatistics.cpp.

86{
87 if (_cnt < 2)
88 return NAN; // otherwise DIV0 error
89 return sqrt(_ssqdif / (_cnt - 1));
90}

◆ variance()

float Statistic::variance ( ) const

Definition at line 64 of file xstatistics.cpp.

65{
66 if (_cnt == 0)
67 return NAN; // otherwise DIV0 error
68 return _ssqdif / _cnt;
69}

Member Data Documentation

◆ _cnt

uint32_t Statistic::_cnt
protected

Definition at line 68 of file xstatistics.h.

◆ _max

float Statistic::_max
protected

Definition at line 71 of file xstatistics.h.

◆ _min

float Statistic::_min
protected

Definition at line 70 of file xstatistics.h.

◆ _ssqdif

float Statistic::_ssqdif
protected

Definition at line 73 of file xstatistics.h.

◆ _sum

float Statistic::_sum
protected

Definition at line 69 of file xstatistics.h.


The documentation for this class was generated from the following files: