27 #ifndef NIDAS_CORE_ADAPTIVE_DESPIKER_H
28 #define NIDAS_CORE_ADAPTIVE_DESPIKER_H
32 namespace nidas {
namespace core {
85 float despike(
float u,
bool* spike);
129 static void spline(
float* x,
float* y,
int n,
double yp1,
double ypn,
float* y2);
131 static double splint (
float* xa,
float* ya,
float* y2a,
int n,
double x)
132 throw(std::range_error);
float forecast() const
Forecast a value based on the previous point and correlation and mean.
Definition: AdaptiveDespiker.h:91
void reset()
Reset the statistics.
Definition: AdaptiveDespiker.cc:199
static const size_t STATISTICS_SIZE
Definition: AdaptiveDespiker.h:119
static bool staticInitDone
Definition: AdaptiveDespiker.h:127
float _levelMultiplier
Increase detection level with this factor.
Definition: AdaptiveDespiker.h:145
int _msize
Memory size.
Definition: AdaptiveDespiker.h:182
double _var1
Previous variance.
Definition: AdaptiveDespiker.h:164
Adaptive forecaster for despiking of time-series data.
Definition: AdaptiveDespiker.h:41
double _level
Definition: AdaptiveDespiker.h:176
float getDiscLevelMultiplier() const
Definition: AdaptiveDespiker.h:70
void updateStatistics(float u)
Definition: AdaptiveDespiker.cc:294
float _missfreq
Running ave of freq of missing data.
Definition: AdaptiveDespiker.h:179
double _initLevel
Discrimination level.
Definition: AdaptiveDespiker.h:174
double _var2
Current variance.
Definition: AdaptiveDespiker.h:167
static bool staticInit()
Definition: AdaptiveDespiker.cc:45
static double splint(float *xa, float *ya, float *y2a, int n, double x)
Definition: AdaptiveDespiker.cc:168
float _maxMissingFreq
If more than _maxMissingFreq of the recent 10 data points are missing data points, don't substitute forecasted data or update forecast statistics.
Definition: AdaptiveDespiker.h:152
AdaptiveDespiker()
Constructor.
Definition: AdaptiveDespiker.cc:69
float getOutlierProbability() const
Definition: AdaptiveDespiker.h:59
static float adjustLevel(float corr)
Adjust the discrimination level based on the current correlation.
Definition: AdaptiveDespiker.cc:340
void setDiscLevelMultiplier(float val)
Definition: AdaptiveDespiker.cc:96
size_t _npts
Number of points processed.
Definition: AdaptiveDespiker.h:185
static float discrLevel(float prob)
Compute a discrimination level from a Gaussan probability.
Definition: AdaptiveDespiker.cc:364
double _mean2
Current mean.
Definition: AdaptiveDespiker.h:161
void setOutlierProbability(float val)
Definition: AdaptiveDespiker.cc:90
void initStatistics(float u)
Definition: AdaptiveDespiker.cc:237
double _mean1
Previous mean.
Definition: AdaptiveDespiker.h:158
float _prob
Prob for detection of outlier in good Gaussian data.
Definition: AdaptiveDespiker.h:142
double _corr
Correlation.
Definition: AdaptiveDespiker.h:171
static void spline(float *x, float *y, int n, double yp1, double ypn, float *y2)
Copied from "Numerical Recipies in C", the only changes being arrays are indexed from 0...
Definition: AdaptiveDespiker.cc:117
static const int LEN_ERFC_ARRAY
Definition: AdaptiveDespiker.h:123
float _u1
Last point.
Definition: AdaptiveDespiker.h:155
float getDiscLevel() const
If a value is more than discrLevel * sigma away from the mean, then it is considered a spike...
Definition: AdaptiveDespiker.h:77
static const int ADJUST_TABLE_SIZE
Definition: AdaptiveDespiker.h:121
static float _adj[ADJUST_TABLE_SIZE][2]
Definition: AdaptiveDespiker.h:125
float despike(float u, bool *spike)
Pass a value u, and return a forecasted value, along with a boolean indicating whether AdaptiveDespik...
Definition: AdaptiveDespiker.cc:206
void incrementStatistics(float u)
Definition: AdaptiveDespiker.cc:256