- implemented Tracker class
- refactored IMinMAx, Statistics git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1036 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
#ifndef _METRICS_IMINMAX_HPP_
|
||||||
|
#define _METRICS_IMINMAX_HPP_
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include <radio/radio_types.h>
|
#include <radio/radio_types.h>
|
||||||
|
|
||||||
namespace Radio
|
namespace Radio
|
||||||
@@ -19,3 +24,5 @@ public:
|
|||||||
};
|
};
|
||||||
} // Metrics
|
} // Metrics
|
||||||
} // Radio
|
} // Radio
|
||||||
|
|
||||||
|
#endif // _METRICS_IMINMAX_HPP_
|
||||||
@@ -27,7 +27,7 @@ Statistics::~Statistics()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IMinMax const& Statistics::provider_minMax() const
|
IMinMax const& Statistics::minMax() const
|
||||||
{
|
{
|
||||||
return m_provider_minMax;
|
return m_provider_minMax;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public:
|
|||||||
Statistics(radio_float_t updateInterval_minMax);
|
Statistics(radio_float_t updateInterval_minMax);
|
||||||
~Statistics();
|
~Statistics();
|
||||||
void process(ComplexScalar const &xin);
|
void process(ComplexScalar const &xin);
|
||||||
IMinMax const& provider_minMax() const;
|
IMinMax const& minMax() const;
|
||||||
|
|
||||||
class MinMaxProvider : public IMinMax
|
class MinMaxProvider : public IMinMax
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,8 +15,25 @@ Tracker::~Tracker()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ComplexScalar const* Tracker::trackers() const
|
||||||
|
{
|
||||||
|
return m_trackers;
|
||||||
|
}
|
||||||
|
|
||||||
void Tracker::process(ComplexScalar const &x)
|
void Tracker::process(ComplexScalar const &x)
|
||||||
{
|
{
|
||||||
|
radio_float_t alpha = 0.002;
|
||||||
|
radio_float_t beta = 1.0 - alpha;
|
||||||
|
radio_float_t min_i = m_prov_minMax.min_i();
|
||||||
|
radio_float_t min_q = m_prov_minMax.min_q();
|
||||||
|
radio_float_t max_i = m_prov_minMax.max_i();
|
||||||
|
radio_float_t max_q = m_prov_minMax.max_q();
|
||||||
|
|
||||||
|
m_trackers[0] = beta*m_trackers[0] + alpha*ComplexScalar(max_i, min_q);
|
||||||
|
m_trackers[1] = beta*m_trackers[1] + alpha*ComplexScalar(max_i, max_q);
|
||||||
|
m_trackers[2] = beta*m_trackers[2] + alpha*ComplexScalar(min_i, max_q);
|
||||||
|
m_trackers[3] = beta*m_trackers[3] + alpha*ComplexScalar(min_i, min_q);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // Metrics
|
} // Metrics
|
||||||
|
|||||||
@@ -17,8 +17,12 @@ public:
|
|||||||
Tracker(IMinMax const &statsProvider);
|
Tracker(IMinMax const &statsProvider);
|
||||||
virtual ~Tracker();
|
virtual ~Tracker();
|
||||||
void process(ComplexScalar const &x);
|
void process(ComplexScalar const &x);
|
||||||
|
ComplexScalar const* trackers() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IMinMax const &m_prov_minMax;
|
IMinMax const &m_prov_minMax;
|
||||||
|
ComplexScalar m_trackers[4];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Metrics
|
} // Metrics
|
||||||
|
|||||||
Reference in New Issue
Block a user