- refactored
- use blaze matrix library instead of Eigen git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@943 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+18
-16
@@ -19,7 +19,7 @@ namespace Equalizer
|
||||
class AEqualizer : public FirComplex
|
||||
{
|
||||
public:
|
||||
AEqualizer(uint32_t numTaps)
|
||||
AEqualizer(size_t numTaps)
|
||||
: FirComplex(numTaps)
|
||||
, m_w(numTaps)
|
||||
{
|
||||
@@ -28,16 +28,16 @@ public:
|
||||
|
||||
virtual ~AEqualizer() {}
|
||||
|
||||
void setNumTaps(uint32_t numTaps)
|
||||
void setNumTaps(size_t numTaps)
|
||||
{
|
||||
FirComplex::setNumTaps(numTaps);
|
||||
m_w.resize(numTaps);
|
||||
}
|
||||
|
||||
void setUnit(uint32_t delay)
|
||||
void setUnit(size_t delay)
|
||||
{
|
||||
m_w.setZero();
|
||||
m_w(delay) = ComplexScalar(1, 0);
|
||||
m_w = ComplexScalar(0, 0);
|
||||
m_w[delay] = ComplexScalar(1, 0);
|
||||
}
|
||||
|
||||
const CVec& getWeights()
|
||||
@@ -59,7 +59,7 @@ protected:
|
||||
class Lms : public AEqualizer
|
||||
{
|
||||
public:
|
||||
Lms(uint32_t numTaps)
|
||||
Lms(size_t numTaps)
|
||||
: AEqualizer(numTaps)
|
||||
{
|
||||
|
||||
@@ -80,14 +80,14 @@ private:
|
||||
class Cma : public Lms
|
||||
{
|
||||
public:
|
||||
Cma(uint32_t numTaps=0)
|
||||
Cma(size_t numTaps=0)
|
||||
: Lms(numTaps)
|
||||
, m_xLast(0)
|
||||
, m_power(0)
|
||||
{
|
||||
}
|
||||
|
||||
void init(uint32_t numTaps)
|
||||
void init(size_t numTaps)
|
||||
{
|
||||
setNumTaps(numTaps);
|
||||
}
|
||||
@@ -153,7 +153,7 @@ private:
|
||||
class Dfe : public Lms
|
||||
{
|
||||
public:
|
||||
Dfe(uint32_t k=0)
|
||||
Dfe(size_t k=0)
|
||||
: Lms(2*k+1)
|
||||
, m_numFeedforward(k+1)
|
||||
, m_numFeedBack(k)
|
||||
@@ -165,7 +165,7 @@ public:
|
||||
{
|
||||
|
||||
}
|
||||
void init(uint32_t k)
|
||||
void init(size_t k)
|
||||
{
|
||||
setNumTaps(2*k+1);
|
||||
m_numFeedforward = k+1;
|
||||
@@ -174,11 +174,13 @@ public:
|
||||
|
||||
ComplexScalar process(ComplexScalar const &xs, ComplexScalar const &xh)
|
||||
{
|
||||
int32_t i;
|
||||
CVec &x = m_state;
|
||||
|
||||
// P-Code
|
||||
// x(0:size-1) = [xs, x(0:m_numFeedforward-2), xh, x(m_numFeedforward:size-2)]
|
||||
m_state.reverse() << m_state.segment(m_numFeedforward-1, m_numFeedBack).reverse(),xh,m_state.segment(0, m_numFeedforward-2).reverse(),xs;
|
||||
auto sv_xs = subvector(m_state, 0, m_numFeedforward);
|
||||
insert_left(sv_xs, xs);
|
||||
|
||||
auto sv_xh = subvector(m_state, m_numFeedforward, m_numFeedBack);
|
||||
insert_left(sv_xh, xh);
|
||||
|
||||
return FirComplex::process(m_w);
|
||||
}
|
||||
@@ -189,8 +191,8 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
uint32_t m_numFeedforward;
|
||||
uint32_t m_numFeedBack;
|
||||
size_t m_numFeedforward;
|
||||
size_t m_numFeedBack;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user