annotate armadillo-3.900.4/include/armadillo_bits/running_stat_bones.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 // Copyright (C) 2009-2011 NICTA (www.nicta.com.au)
Chris@49 2 // Copyright (C) 2009-2011 Conrad Sanderson
Chris@49 3 //
Chris@49 4 // This Source Code Form is subject to the terms of the Mozilla Public
Chris@49 5 // License, v. 2.0. If a copy of the MPL was not distributed with this
Chris@49 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
Chris@49 7
Chris@49 8
Chris@49 9 //! \addtogroup running_stat
Chris@49 10 //! @{
Chris@49 11
Chris@49 12
Chris@49 13
Chris@49 14 template<typename eT>
Chris@49 15 class arma_counter
Chris@49 16 {
Chris@49 17 public:
Chris@49 18
Chris@49 19 inline ~arma_counter();
Chris@49 20 inline arma_counter();
Chris@49 21
Chris@49 22 inline const arma_counter& operator++();
Chris@49 23 inline void operator++(int);
Chris@49 24
Chris@49 25 inline void reset();
Chris@49 26 inline eT value() const;
Chris@49 27 inline eT value_plus_1() const;
Chris@49 28 inline eT value_minus_1() const;
Chris@49 29
Chris@49 30
Chris@49 31 private:
Chris@49 32
Chris@49 33 arma_aligned eT d_count;
Chris@49 34 arma_aligned uword i_count;
Chris@49 35 };
Chris@49 36
Chris@49 37
Chris@49 38
Chris@49 39 //! Class for keeping statistics of a continuously sampled process / signal.
Chris@49 40 //! Useful if the storage of individual samples is not necessary or desired.
Chris@49 41 //! Also useful if the number of samples is not known beforehand or exceeds
Chris@49 42 //! available memory.
Chris@49 43 template<typename eT>
Chris@49 44 class running_stat
Chris@49 45 {
Chris@49 46 public:
Chris@49 47
Chris@49 48 typedef typename get_pod_type<eT>::result T;
Chris@49 49
Chris@49 50
Chris@49 51 inline ~running_stat();
Chris@49 52 inline running_stat();
Chris@49 53
Chris@49 54 inline void operator() (const T sample);
Chris@49 55 inline void operator() (const std::complex<T>& sample);
Chris@49 56
Chris@49 57 inline void reset();
Chris@49 58
Chris@49 59 inline eT mean() const;
Chris@49 60
Chris@49 61 inline T var (const uword norm_type = 0) const;
Chris@49 62 inline T stddev(const uword norm_type = 0) const;
Chris@49 63
Chris@49 64 inline eT min() const;
Chris@49 65 inline eT max() const;
Chris@49 66
Chris@49 67 inline T count() const;
Chris@49 68
Chris@49 69 //
Chris@49 70 //
Chris@49 71
Chris@49 72 private:
Chris@49 73
Chris@49 74 arma_aligned arma_counter<T> counter;
Chris@49 75
Chris@49 76 arma_aligned eT r_mean;
Chris@49 77 arma_aligned T r_var;
Chris@49 78
Chris@49 79 arma_aligned eT min_val;
Chris@49 80 arma_aligned eT max_val;
Chris@49 81
Chris@49 82 arma_aligned T min_val_norm;
Chris@49 83 arma_aligned T max_val_norm;
Chris@49 84
Chris@49 85
Chris@49 86 friend class running_stat_aux;
Chris@49 87 };
Chris@49 88
Chris@49 89
Chris@49 90
Chris@49 91 class running_stat_aux
Chris@49 92 {
Chris@49 93 public:
Chris@49 94
Chris@49 95 template<typename eT>
Chris@49 96 inline static void update_stats(running_stat<eT>& x, const eT sample);
Chris@49 97
Chris@49 98 template<typename T>
Chris@49 99 inline static void update_stats(running_stat< std::complex<T> >& x, const T sample);
Chris@49 100
Chris@49 101 template<typename T>
Chris@49 102 inline static void update_stats(running_stat< std::complex<T> >& x, const std::complex<T>& sample);
Chris@49 103
Chris@49 104 };
Chris@49 105
Chris@49 106
Chris@49 107
Chris@49 108 //! @}