MeteoIODoc  MeteoIODoc-2.9.0
mio::ProcExpSmoothing Class Reference

## Detailed Description

Exponential smoothing.

This implements an exponential moving average smoothing of parameter alpha (https://en.wikipedia.org/wiki/Exponential_smoothing) such as (s being the filtered values and x the raw data):

• s_0 = x_0
• s_n = alpha*x_(t-1) + (1-alpha)*s_(t-1)

Nodata values are excluded from the moving average calculation. It takes the following arguments:

The standard behavior for this filter is obtained by using a left window. If using a right window, it behaves as if time was reversed (ie. predictions from the future). A centered window applies the standard algorithms on the distance between the center point and each points, that is that points get averaged symetrically around the middle point before running the standard algorithm.

Note
This filter temporally shifts the signal back by window_width/2 if using left or right window
This would probably lead to slightly unexpected results if used on irregularly sampled data
TA::filter1 = exp_smoothing
TA::arg1::soft = FALSE
TA::arg1::centering = right
TA::arg1::min_pts = 1
TA::arg1::min_span = 1800 ;ie 1800 seconds time span for the left leaning window
TA::arg1::alpha = 0.8
RH::filter1 = mean_avg
RH::arg1::min_pts = 10
RH::arg1::min_span = 600 ;strictly centered window spanning 600 seconds and at least 10 points
RH::arg1::alpha = 0.6

`#include <ProcExpSmoothing.h>`

## Public Member Functions

ProcExpSmoothing (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name)

virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)

Public Member Functions inherited from mio::ProcessingBlock
virtual ~ProcessingBlock ()

virtual void process (Date &dateStart, Date &dateEnd)

std::string getName () const

const ProcessingPropertiesgetProperties () const

const std::string toString () const

bool skipStation (const std::string &station_id) const

bool noStationsRestrictions () const

Public Types inherited from mio::WindowedFilter
enum  Centering { left, center, right }

Static Public Member Functions inherited from mio::ProcessingBlock
static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y)

static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2)

static std::vector< double > readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init)

static std::vector< offset_specreadCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2)

static std::map< std::string, std::vector< dates_range > > readDates (const std::string &filter, const std::string &filename, const double &TZ)

static std::set< std::string > initStationSet (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &keyword)

Protected Member Functions inherited from mio::WindowedFilter
WindowedFilter (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const bool &skipWindowParams=false)
Construct a WindowedFilter Object. This is for filters that require a certain window of data. More...

void setWindowFParams (const std::vector< std::pair< std::string, std::string > > &vecArgs)
Parse the arguments in order to retrieve the user parameters for the data window. The following parameters are recognized: More...

const std::vector< const MeteoData * > & get_window (const size_t &index, const std::vector< MeteoData > &ivec)
A function that cuts out the desired window for the 'index' element within ivec, the window elements are stored into vec_window Calls to this function have to start with index 0, then 1, 2, 3, ... vec_window is not allowed to be changed between two calls. More...

bool get_window_specs (const size_t &index, const std::vector< MeteoData > &ivec, size_t &start, size_t &end) const
A function that computes the start and end for a window for the 'index' element from ivec The principle is to compute the first index that matches the minimum number of points criteria, and the one that matches the minimum time window, then combine them (with the equivalent of OR: we take the MIN index). Afterward, we compute the last index [...] for number of points and the last index [...] for the time window and combine them (with the equivalent of OR: we take the MIN index) or vice versa for right centering. More...

Protected Member Functions inherited from mio::ProcessingBlock
ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name)
protected constructor only to be called by children More...

Static Protected Member Functions inherited from mio::ProcessingBlock
static void extract_dbl_vector (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< double > &ovec)

static void extract_dbl_vector (const unsigned int &param, const std::vector< const MeteoData *> &ivec, std::vector< double > &ovec)

Protected Attributes inherited from mio::WindowedFilter
Duration min_time_span
This is filled in the constructor by calling setWindowFParams. More...

Centering centering
This is filled in the constructor by calling setWindowFParams. More...

size_t min_data_points
This is filled in the constructor by calling setWindowFParams. More...

size_t last_start

size_t last_end

bool is_soft

Protected Attributes inherited from mio::ProcessingBlock
const std::set< std::string > excluded_stations

const std::set< std::string > kept_stations

ProcessingProperties properties

const std::string block_name

Static Protected Attributes inherited from mio::ProcessingBlock
static const double soil_albedo = .23

static const double snow_albedo = .85

static const double snow_thresh = .1
parametrize the albedo from HS More...

## ◆ ProcExpSmoothing()

 mio::ProcExpSmoothing::ProcExpSmoothing ( const std::vector< std::pair< std::string, std::string > > & vecArgs, const std::string & name )

## ◆ process()

 void mio::ProcExpSmoothing::process ( const unsigned int & param, const std::vector< MeteoData > & ivec, std::vector< MeteoData > & ovec )
virtual

Implements mio::WindowedFilter.

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