git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@945 b431acfa-c32f-4a4a-93f1-934dc6c82436
60 lines
816 B
C++
60 lines
816 B
C++
/*
|
|
* File: FirComplex.hpp
|
|
* Author: jens
|
|
*
|
|
* Created on 20. Dezember 2014, 08:12
|
|
*/
|
|
|
|
#ifndef _RADIO_FIRCOMPLEX_HPP_
|
|
#define _RADIO_FIRCOMPLEX_HPP_
|
|
|
|
#include <cpp/radio/Vector.hpp>
|
|
|
|
namespace Radio
|
|
{
|
|
|
|
class FirComplex
|
|
{
|
|
public:
|
|
FirComplex(size_t numTaps = 0)
|
|
: m_numTaps(numTaps)
|
|
, m_state(numTaps)
|
|
{
|
|
}
|
|
virtual ~FirComplex()
|
|
{
|
|
|
|
}
|
|
|
|
void setNumTaps(size_t numTaps)
|
|
{
|
|
m_numTaps = numTaps;
|
|
m_state.resize(numTaps);
|
|
m_state = ComplexScalar(0,0);
|
|
}
|
|
|
|
void feed(ComplexScalar const &x)
|
|
{
|
|
insert_left(m_state, x);
|
|
}
|
|
|
|
ComplexScalar process(CVec const &coeff)
|
|
{
|
|
return trans(m_state) * conj(coeff);
|
|
}
|
|
|
|
ComplexScalar processReal(RVec const &coeff)
|
|
{
|
|
return trans(m_state) * coeff;
|
|
}
|
|
|
|
protected:
|
|
size_t m_numTaps;
|
|
CVec m_state;
|
|
};
|
|
|
|
} // ::Radio
|
|
|
|
#endif /* _RADIO_FIRCOMPLEX_HPP_ */
|
|
|