GNU Radio 3.6.5 C++ API

digital_lms_dd_equalizer_cc Class Reference

Least-Mean-Square Decision Directed Equalizer (complex in/out) More...

#include <digital_lms_dd_equalizer_cc.h>

Inheritance diagram for digital_lms_dd_equalizer_cc:
gr_adaptive_fir_ccc gr_sync_decimator gr_sync_block gr_block gr_basic_block gr_msg_accepter gruel::msg_accepter

List of all members.

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)

Detailed Description

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.


Member Function Documentation

virtual gr_complex digital_lms_dd_equalizer_cc::error ( const gr_complex out) [inline, protected, virtual]
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]

Friends And Related Function Documentation

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]

The documentation for this class was generated from the following file: