- refactored IMinMAx, Statistics git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1036 b431acfa-c32f-4a4a-93f1-934dc6c82436
46 lines
1.3 KiB
C++
46 lines
1.3 KiB
C++
#include "Statistics.hpp"
|
|
#include <radio/cpx.h>
|
|
|
|
namespace Radio
|
|
{
|
|
namespace Metrics
|
|
{
|
|
Statistics::Statistics(radio_float_t updateInterval_minMax)
|
|
: m_provider_minMax(*this)
|
|
{
|
|
SlidingMinMaxInit(&m_sl_min_I, updateInterval_minMax, (radio_float_t)1E12, -1);
|
|
SlidingMinMaxInit(&m_sl_min_Q, updateInterval_minMax, (radio_float_t)1E12, -1);
|
|
SlidingMinMaxInit(&m_sl_min_mag, updateInterval_minMax, (radio_float_t)1E12, -1);
|
|
SlidingMinMaxInit(&m_sl_max_I, updateInterval_minMax, (radio_float_t)1E12, +1);
|
|
SlidingMinMaxInit(&m_sl_max_Q, updateInterval_minMax, (radio_float_t)1E12, +1);
|
|
SlidingMinMaxInit(&m_sl_max_mag, updateInterval_minMax, (radio_float_t)1E12, +1);
|
|
}
|
|
|
|
Statistics::~Statistics()
|
|
{
|
|
SlidingMinMaxFree(&m_sl_min_I);
|
|
SlidingMinMaxFree(&m_sl_min_Q);
|
|
SlidingMinMaxFree(&m_sl_min_mag);
|
|
SlidingMinMaxFree(&m_sl_max_I);
|
|
SlidingMinMaxFree(&m_sl_max_Q);
|
|
SlidingMinMaxFree(&m_sl_max_mag);
|
|
|
|
}
|
|
|
|
IMinMax const& Statistics::minMax() const
|
|
{
|
|
return m_provider_minMax;
|
|
}
|
|
|
|
void Statistics::process(ComplexScalar const &x)
|
|
{
|
|
SlidingMinMaxProcess(&m_sl_min_I, x.real());
|
|
SlidingMinMaxProcess(&m_sl_min_Q, x.imag());
|
|
SlidingMinMaxProcess(&m_sl_min_mag, CpxMagS(toCpx(x)));
|
|
SlidingMinMaxProcess(&m_sl_max_I, x.real());
|
|
SlidingMinMaxProcess(&m_sl_max_Q, x.imag());
|
|
SlidingMinMaxProcess(&m_sl_max_mag, CpxMagS(toCpx(x)));
|
|
}
|
|
} // Metrics
|
|
} // Radio
|