9namespace gtsam_points {
17 RunningStatistics() : num_data(0), sum(0), sum_sq(0), min_(std::numeric_limits<double>::max()), max_(std::numeric_limits<double>::lowest()) {}
20 void add(
const T& x) {
25 if constexpr (std::is_floating_point_v<T>) {
26 min_ = std::min(min_, x);
27 max_ = std::max(max_, x);
29 min_ = min_.cwiseMin(x);
30 max_ = max_.cwiseMax(x);
36 num_data += rhs.num_data;
40 if constexpr (std::is_floating_point_v<T>) {
41 min_ = std::min(min_, rhs.min_);
42 max_ = std::max(max_, rhs.max_);
44 min_ = min_.cwiseMin(rhs.min_);
45 max_ = max_.cwiseMax(rhs.max_);
52 size_t size()
const {
return num_data; }
55 T
mean()
const {
return sum / num_data; }
58 T
var()
const {
return (sum_sq - sum *
mean()) / num_data; }
62 if constexpr (std::is_floating_point_v<T>) {
63 return std::sqrt(
var());
70 const T&
min()
const {
return min_; }
73 const T&
max()
const {
return max_; }
87std::ostream& operator<<(std::ostream& os,
const gtsam_points::RunningStatistics<T>& stats) {
88 if constexpr (std::is_floating_point_v<T>) {
89 os <<
"num_data=" << stats.
size() <<
" mean=" << stats.
mean() <<
" std=" << stats.
std() <<
" min=" << stats.
min() <<
" max=" << stats.
max();
91 os <<
"num_data=" << stats.
size() <<
" mean=" << stats.
mean().transpose() <<
" std=" << stats.
std().transpose()
92 <<
" min=" << stats.
min().transpose() <<
" max=" << stats.
max().transpose();
Running statistics calculator.
Definition running_statistics.hpp:15
RunningStatistics & operator+=(const RunningStatistics &rhs)
Join two statistics.
Definition running_statistics.hpp:35
T mean() const
Mean.
Definition running_statistics.hpp:55
void add(const T &x)
Add a data point.
Definition running_statistics.hpp:20
size_t size() const
Number of data points.
Definition running_statistics.hpp:52
T var() const
Variance.
Definition running_statistics.hpp:58
const T & max() const
Maximum value.
Definition running_statistics.hpp:73
const T & min() const
Minimum value.
Definition running_statistics.hpp:70
T std() const
Standard deviation.
Definition running_statistics.hpp:61