GNU Radio 3.5.1 C++ API
|
Least-Mean-Square Decision Directed Equalizer (complex in/out)This block implements an LMS-based decision-directed equalizer. It uses a set of weights, w, to correlate against the inputs, u, and a decisions is then made from this output. The error in the decision is used to update teh weight vector. More...
#include <digital_lms_dd_equalizer_cc.h>
Public Member Functions | |
float | get_gain () |
void | set_gain (float mu) |
Protected Member Functions | |
virtual gr_complex | error (const gr_complex &out) |
virtual void | update_tap (gr_complex &tap, const gr_complex &in) |
Friends | |
DIGITAL_API digital_lms_dd_equalizer_cc_sptr | digital_make_lms_dd_equalizer_cc (int num_taps, float mu, int sps, digital_constellation_sptr cnst) |
Least-Mean-Square Decision Directed Equalizer (complex in/out)
This block implements an LMS-based decision-directed equalizer. It uses a set of weights, w, to correlate against the inputs, u, and a decisions is then made from this output. The error in the decision is used to update teh weight vector.
y[n] = conj(w[n]) u[n] d[n] = decision(y[n]) e[n] = d[n] - y[n] w[n+1] = w[n] + mu u[n] conj(e[n])
Where mu is a gain value (between 0 and 1 and usualy small, around 0.001 - 0.01.
This block uses the digital_constellation object for making the decision from y[n]. Create the constellation object for whatever constellation is to be used and pass in the object. In Python, you can use something like: self.constellation = digital.constellation_qpsk() To create a QPSK constellation (see the digital_constellation block for more details as to what constellations are available or how to create your own). You then pass the object to this block as an sptr, or using "self.constellation.base()".
The theory for this algorithm can be found in Chapter 9 of: S. Haykin, Adaptive Filter Theory, Upper Saddle River, NJ: Prentice Hall, 1996.
virtual gr_complex digital_lms_dd_equalizer_cc::error | ( | const gr_complex & | out | ) | [inline, protected, virtual] |
Implements gr_adaptive_fir_ccc.
References gr_adaptive_fir_ccc::error().
float digital_lms_dd_equalizer_cc::get_gain | ( | ) | [inline] |
void digital_lms_dd_equalizer_cc::set_gain | ( | float | mu | ) | [inline] |
virtual void digital_lms_dd_equalizer_cc::update_tap | ( | gr_complex & | tap, |
const gr_complex & | in | ||
) | [inline, protected, virtual] |
Implements gr_adaptive_fir_ccc.
References gr_adaptive_fir_ccc::d_error.
DIGITAL_API digital_lms_dd_equalizer_cc_sptr digital_make_lms_dd_equalizer_cc | ( | int | num_taps, |
float | mu, | ||
int | sps, | ||
digital_constellation_sptr | cnst | ||
) | [friend] |