- 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:
2022-06-18 14:05:39 +00:00
parent dea5ae345d
commit 4d13e8e41f
5 changed files with 30 additions and 2 deletions
+7
View File
@@ -1,3 +1,8 @@
#ifndef _METRICS_IMINMAX_HPP_
#define _METRICS_IMINMAX_HPP_
#pragma once
#include <radio/radio_types.h>
namespace Radio
@@ -19,3 +24,5 @@ public:
};
} // Metrics
} // Radio
#endif // _METRICS_IMINMAX_HPP_
+1 -1
View File
@@ -27,7 +27,7 @@ Statistics::~Statistics()
}
IMinMax const& Statistics::provider_minMax() const
IMinMax const& Statistics::minMax() const
{
return m_provider_minMax;
}
+1 -1
View File
@@ -19,7 +19,7 @@ public:
Statistics(radio_float_t updateInterval_minMax);
~Statistics();
void process(ComplexScalar const &xin);
IMinMax const& provider_minMax() const;
IMinMax const& minMax() const;
class MinMaxProvider : public IMinMax
{
+17
View File
@@ -15,8 +15,25 @@ Tracker::~Tracker()
{
}
ComplexScalar const* Tracker::trackers() const
{
return m_trackers;
}
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
+4
View File
@@ -17,8 +17,12 @@ public:
Tracker(IMinMax const &statsProvider);
virtual ~Tracker();
void process(ComplexScalar const &x);
ComplexScalar const* trackers() const;
private:
IMinMax const &m_prov_minMax;
ComplexScalar m_trackers[4];
};
} // Metrics