Visual Servoing Platform  version 3.6.1 under development (2024-04-27)
vpStatisticalTestAbstract Class Referenceabstract

#include <visp3/core/vpStatisticalTestAbstract.h>

+ Inheritance diagram for vpStatisticalTestAbstract:

Public Types

enum  vpMeanDriftType {
  MEAN_DRIFT_NONE = 0 , MEAN_DRIFT_DOWNWARD = 1 , MEAN_DRIFT_UPWARD = 2 , MEAN_DRIFT_BOTH = 3 ,
  MEAN_DRIFT_COUNT = 4 , MEAN_DRIFT_UNKNOWN = MEAN_DRIFT_COUNT
}
 
typedef enum vpStatisticalTestAbstract::vpMeanDriftType vpMeanDriftType
 

Public Member Functions

 vpStatisticalTestAbstract ()
 
 vpStatisticalTestAbstract (const vpStatisticalTestAbstract &other)
 
virtual ~vpStatisticalTestAbstract ()
 
void getLimits (float &limitDown, float &limitUp) const
 
float getMean () const
 
float getStdev () const
 
void init ()
 
vpStatisticalTestAbstractoperator= (const vpStatisticalTestAbstract &other)
 
void setMinStdev (const float &stdevmin)
 
void setNbSamplesForStat (const unsigned int &nbSamples)
 
vpMeanDriftType testDownUpwardMeanDrift (const float &signal)
 
vpMeanDriftType testDownwardMeanDrift (const float &signal)
 
vpMeanDriftType testUpwardMeanDrift (const float &signal)
 

Static Public Member Functions

static std::string vpMeanDriftTypeToString (const vpMeanDriftType &type)
 
static vpMeanDriftType vpMeanDriftTypeFromString (const std::string &name)
 
static std::string getAvailableMeanDriftType (const std::string &prefix="<", const std::string &sep=" , ", const std::string &suffix=">")
 
static void print (const vpMeanDriftType &type)
 

Protected Member Functions

virtual vpMeanDriftType detectDownwardMeanDrift ()=0
 
virtual vpMeanDriftType detectUpwardMeanDrift ()=0
 
virtual bool updateStatistics (const float &signal)
 
virtual void updateTestSignals (const float &signal)=0
 

Protected Attributes

bool m_areStatisticsComputed
 
float m_count
 
float m_limitDown
 
float m_limitUp
 
float m_mean
 
unsigned int m_nbSamplesForStatistics
 
float * m_s
 
float m_stdev
 
float m_stdevmin
 
float m_sumForMean
 

Detailed Description

Base class for methods detecting the drift of the mean of a process.

To detect only downward drifts of the input signal $ s(t) $ use testDownwardMeanDrift().To detect only upward drifts in $ s(t) $ use testUpwardMeanDrift(). To detect both, downward and upward drifts use testDownUpwardMeanDrift().

Examples
tutorial-meandrift.cpp.

Definition at line 56 of file vpStatisticalTestAbstract.h.

Member Typedef Documentation

◆ vpMeanDriftType

Enum that indicates if a drift of the mean occurred.

Member Enumeration Documentation

◆ vpMeanDriftType

Enum that indicates if a drift of the mean occurred.

Enumerator
MEAN_DRIFT_NONE 

No mean drift occurred

MEAN_DRIFT_DOWNWARD 

A downward drift of the mean occurred.

MEAN_DRIFT_UPWARD 

An upward drift of the mean occurred.

MEAN_DRIFT_BOTH 

Both an aupward and a downward drifts occurred.

MEAN_DRIFT_COUNT 
MEAN_DRIFT_UNKNOWN 

Definition at line 62 of file vpStatisticalTestAbstract.h.

Constructor & Destructor Documentation

◆ vpStatisticalTestAbstract() [1/2]

vpStatisticalTestAbstract::vpStatisticalTestAbstract ( )

Construct a new vpStatisticalTestAbstract object.

Definition at line 128 of file vpStatisticalTestAbstract.cpp.

◆ vpStatisticalTestAbstract() [2/2]

vpStatisticalTestAbstract::vpStatisticalTestAbstract ( const vpStatisticalTestAbstract other)

Construct by copy a new vpStatisticalTestAbstract object.

Definition at line 141 of file vpStatisticalTestAbstract.cpp.

◆ ~vpStatisticalTestAbstract()

vpStatisticalTestAbstract::~vpStatisticalTestAbstract ( )
virtual

Destroy the vpStatisticalTestAbstract object.

Definition at line 146 of file vpStatisticalTestAbstract.cpp.

References m_s.

Member Function Documentation

◆ detectDownwardMeanDrift()

virtual vpMeanDriftType vpStatisticalTestAbstract::detectDownwardMeanDrift ( )
protectedpure virtual

Detects if a downward mean drift occurred.

Returns
vpMeanDriftType::MEAN_DRIFT_DOWNWARD if a downward mean drift occurred, vpMeanDriftType::MEAN_DRIFT_NONE otherwise.
See also
detectUpwardMeanDrift()

Implemented in vpStatisticalTestSigma, vpStatisticalTestShewhart, vpStatisticalTestMeanAdjustedCUSUM, vpStatisticalTestHinkley, and vpStatisticalTestEWMA.

Referenced by testDownUpwardMeanDrift(), and testDownwardMeanDrift().

◆ detectUpwardMeanDrift()

virtual vpMeanDriftType vpStatisticalTestAbstract::detectUpwardMeanDrift ( )
protectedpure virtual

Detects if a upward mean drift occurred.

Returns
vpMeanDriftType::MEAN_DRIFT_UPWARD if an upward mean drift occurred, vpMeanDriftType::MEAN_DRIFT_NONE otherwise.
See also
detectDownwardMeanDrift()

Implemented in vpStatisticalTestSigma, vpStatisticalTestShewhart, vpStatisticalTestMeanAdjustedCUSUM, vpStatisticalTestHinkley, and vpStatisticalTestEWMA.

Referenced by testDownUpwardMeanDrift(), and testUpwardMeanDrift().

◆ getAvailableMeanDriftType()

std::string vpStatisticalTestAbstract::getAvailableMeanDriftType ( const std::string &  prefix = "<",
const std::string &  sep = " , ",
const std::string &  suffix = ">" 
)
static

Get the list of available vpMeanDriftType objects that are handled.

Parameters
[in]prefixThe prefix that should be placed before the list.
[in]sepThe separator between each element of the list.
[in]suffixThe suffix that should terminate the list.
Returns
std::string The list of handled type of process tests, presented as a string.
Examples
tutorial-meandrift.cpp.

Definition at line 82 of file vpStatisticalTestAbstract.cpp.

References MEAN_DRIFT_COUNT, and vpMeanDriftTypeToString().

◆ getLimits()

void vpStatisticalTestAbstract::getLimits ( float &  limitDown,
float &  limitUp 
) const
inline

Get the upper and lower limits of the test signal.

Parameters
[out]limitDownThe lower limit.
[out]limitUpThe upper limit.
Examples
testSPC.cpp, and tutorial-meandrift.cpp.

Definition at line 174 of file vpStatisticalTestAbstract.h.

◆ getMean()

float vpStatisticalTestAbstract::getMean ( ) const
inline

Get the mean used as reference.

Returns
float The mean.
Examples
tutorial-meandrift.cpp.

Definition at line 185 of file vpStatisticalTestAbstract.h.

◆ getStdev()

float vpStatisticalTestAbstract::getStdev ( ) const
inline

Get the standard deviation used as reference.

Returns
float The standard deviation.
Examples
tutorial-meandrift.cpp.

Definition at line 195 of file vpStatisticalTestAbstract.h.

◆ init()

◆ operator=()

vpStatisticalTestAbstract & vpStatisticalTestAbstract::operator= ( const vpStatisticalTestAbstract other)

◆ print()

void vpStatisticalTestAbstract::print ( const vpMeanDriftType type)
static

Print the message corresponding to the type of mean drift.

Parameters
[in]typeThe type of mean drift.

Definition at line 95 of file vpStatisticalTestAbstract.cpp.

References vpMeanDriftTypeToString().

◆ setMinStdev()

void vpStatisticalTestAbstract::setMinStdev ( const float &  stdevmin)
inline

Set the minimum value of the standard deviation that is expected. The computed standard deviation cannot be lower this value if set.

Parameters
[in]stdevminThe minimum value of the standard deviation that is expected.

Definition at line 219 of file vpStatisticalTestAbstract.h.

◆ setNbSamplesForStat()

void vpStatisticalTestAbstract::setNbSamplesForStat ( const unsigned int &  nbSamples)

Set the number of samples required to compute the mean and standard deviation of the signal and allocate the memory accordingly.

Parameters
[in]nbSamplesThe number of samples we want to use.

Definition at line 190 of file vpStatisticalTestAbstract.cpp.

References m_nbSamplesForStatistics, and m_s.

Referenced by vpStatisticalTestHinkley::init(), vpStatisticalTestEWMA::init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), and operator=().

◆ testDownUpwardMeanDrift()

vpStatisticalTestAbstract::vpMeanDriftType vpStatisticalTestAbstract::testDownUpwardMeanDrift ( const float &  signal)

Test if a downward or an upward mean drift occurred according to the new value of the signal.

Parameters
[in]signalThe new value of the signal.
Returns
vpMeanDriftType The type of mean drift that occurred.
See also
testDownwardMeanDrift() testUpwardMeanDrift()
Examples
testSPC.cpp, and tutorial-meandrift.cpp.

Definition at line 199 of file vpStatisticalTestAbstract.cpp.

References detectDownwardMeanDrift(), detectUpwardMeanDrift(), m_areStatisticsComputed, MEAN_DRIFT_BOTH, MEAN_DRIFT_NONE, updateStatistics(), and updateTestSignals().

◆ testDownwardMeanDrift()

vpStatisticalTestAbstract::vpMeanDriftType vpStatisticalTestAbstract::testDownwardMeanDrift ( const float &  signal)

Test if a downward mean drift occurred according to the new value of the signal.

Parameters
[in]signalThe new value of the signal.
Returns
vpMeanDriftType The type of mean drift that occurred.
See also
testUpwardMeanDrift()

Definition at line 224 of file vpStatisticalTestAbstract.cpp.

References detectDownwardMeanDrift(), m_areStatisticsComputed, MEAN_DRIFT_NONE, updateStatistics(), and updateTestSignals().

◆ testUpwardMeanDrift()

vpStatisticalTestAbstract::vpMeanDriftType vpStatisticalTestAbstract::testUpwardMeanDrift ( const float &  signal)

Test if an upward mean drift occurred according to the new value of the signal.

Parameters
[in]signalThe new value of the signal.
Returns
vpMeanDriftType The type of mean drift that occurred.
See also
testDownwardMeanDrift()

Definition at line 236 of file vpStatisticalTestAbstract.cpp.

References detectUpwardMeanDrift(), m_areStatisticsComputed, MEAN_DRIFT_NONE, updateStatistics(), and updateTestSignals().

◆ updateStatistics()

bool vpStatisticalTestAbstract::updateStatistics ( const float &  signal)
protectedvirtual

Update m_s and if enough values are available, compute the mean, the standard deviation and the limits.

Parameters
[in]signalThe new value of the signal to monitor.
Returns
true if the statistics have been computed, false if data are missing.

Reimplemented in vpStatisticalTestSigma, vpStatisticalTestShewhart, vpStatisticalTestMeanAdjustedCUSUM, vpStatisticalTestHinkley, and vpStatisticalTestEWMA.

Definition at line 100 of file vpStatisticalTestAbstract.cpp.

References m_areStatisticsComputed, m_count, m_mean, m_nbSamplesForStatistics, m_s, m_stdev, m_stdevmin, and m_sumForMean.

Referenced by testDownUpwardMeanDrift(), testDownwardMeanDrift(), testUpwardMeanDrift(), vpStatisticalTestEWMA::updateStatistics(), vpStatisticalTestHinkley::updateStatistics(), vpStatisticalTestMeanAdjustedCUSUM::updateStatistics(), vpStatisticalTestShewhart::updateStatistics(), and vpStatisticalTestSigma::updateStatistics().

◆ updateTestSignals()

virtual void vpStatisticalTestAbstract::updateTestSignals ( const float &  signal)
protectedpure virtual

Update the test signals.

Parameters
[in]signalThe new value of the signal to monitor.

Implemented in vpStatisticalTestSigma, vpStatisticalTestShewhart, vpStatisticalTestMeanAdjustedCUSUM, vpStatisticalTestHinkley, and vpStatisticalTestEWMA.

Referenced by testDownUpwardMeanDrift(), testDownwardMeanDrift(), and testUpwardMeanDrift().

◆ vpMeanDriftTypeFromString()

vpStatisticalTestAbstract::vpMeanDriftType vpStatisticalTestAbstract::vpMeanDriftTypeFromString ( const std::string &  name)
static

Cast a string into a vpMeanDriftType.

Parameters
[in]nameThe name of the mean drift.
Returns
vpMeanDriftType The corresponding vpMeanDriftType.
Examples
tutorial-meandrift.cpp.

Definition at line 65 of file vpStatisticalTestAbstract.cpp.

References MEAN_DRIFT_COUNT, MEAN_DRIFT_UNKNOWN, and vpMeanDriftTypeToString().

Referenced by TutorialMeanDrift::vectorOfStringToMeanDriftTypeArray().

◆ vpMeanDriftTypeToString()

std::string vpStatisticalTestAbstract::vpMeanDriftTypeToString ( const vpMeanDriftType type)
static

Cast a vpMeanDriftType into a string.

Parameters
[in]typeThe type of mean drift.
Returns
std::string The corresponding message.
Examples
testSPC.cpp, and tutorial-meandrift.cpp.

Definition at line 41 of file vpStatisticalTestAbstract.cpp.

References MEAN_DRIFT_BOTH, MEAN_DRIFT_DOWNWARD, MEAN_DRIFT_NONE, MEAN_DRIFT_UNKNOWN, and MEAN_DRIFT_UPWARD.

Referenced by getAvailableMeanDriftType(), TutorialMeanDrift::meanDriftArrayToVectorOfString(), print(), and vpMeanDriftTypeFromString().

Member Data Documentation

◆ m_areStatisticsComputed

◆ m_count

float vpStatisticalTestAbstract::m_count
protected

Current number of data used to compute the mean and the standard deviation.

Definition at line 108 of file vpStatisticalTestAbstract.h.

Referenced by vpStatisticalTestHinkley::computeMean(), init(), operator=(), updateStatistics(), and vpStatisticalTestHinkley::updateTestSignals().

◆ m_limitDown

◆ m_limitUp

◆ m_mean

◆ m_nbSamplesForStatistics

unsigned int vpStatisticalTestAbstract::m_nbSamplesForStatistics
protected

Number of samples to use to compute the mean and the standard deviation.

Definition at line 112 of file vpStatisticalTestAbstract.h.

Referenced by init(), operator=(), setNbSamplesForStat(), and updateStatistics().

◆ m_s

float* vpStatisticalTestAbstract::m_s
protected

Array that keeps the samples used to compute the mean and standard deviation.

Definition at line 113 of file vpStatisticalTestAbstract.h.

Referenced by vpStatisticalTestSigma::getSignal(), init(), operator=(), setNbSamplesForStat(), updateStatistics(), and ~vpStatisticalTestAbstract().

◆ m_stdev

◆ m_stdevmin

float vpStatisticalTestAbstract::m_stdevmin
protected

Minimum allowed standard deviation of the monitored signal.

Definition at line 115 of file vpStatisticalTestAbstract.h.

Referenced by updateStatistics().

◆ m_sumForMean

float vpStatisticalTestAbstract::m_sumForMean
protected

Sum of the samples used to compute the mean and standard deviation.

Definition at line 116 of file vpStatisticalTestAbstract.h.

Referenced by init(), vpStatisticalTestMeanAdjustedCUSUM::init(), operator=(), and updateStatistics().