gr::digital::ofdm_equalizer_simpledfe
gr::digital::ofdm_equalizer_1d_pilots
gnuradio/digital/ofdm_equalizer_simpledfe.h
std::shared_ptr< ofdm_equalizer_simpledfe > std::shared_ptr<ofdm_equalizer_simpledfe> gr::digital::ofdm_equalizer_simpledfe::sptr sptr gr::digital::ofdm_equalizer_simpledfe::sptr
gr::digital::constellation_sptr gr::digital::constellation_sptr gr::digital::ofdm_equalizer_simpledfe::d_constellation d_constellation gr::digital::ofdm_equalizer_simpledfe::d_constellation
float float gr::digital::ofdm_equalizer_simpledfe::d_alpha d_alpha gr::digital::ofdm_equalizer_simpledfe::d_alpha

Averaging coefficient.

bool bool gr::digital::ofdm_equalizer_simpledfe::d_enable_soft_output d_enable_soft_output gr::digital::ofdm_equalizer_simpledfe::d_enable_soft_output

Do not output exact constellation symbols.

gr::digital::ofdm_equalizer_simpledfe::ofdm_equalizer_simpledfe
(int fft_len, const gr::digital::constellation_sptr &constellation, const std::vector< std::vector< int > > &occupied_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< int > > &pilot_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< gr_complex > > &pilot_symbols=std::vector< std::vector< gr_complex > >(), int symbols_skipped=0, float alpha=0.1, bool input_is_shifted=true, bool enable_soft_output=false)
ofdm_equalizer_simpledfe
gr::digital::ofdm_equalizer_simpledfe::ofdm_equalizer_simpledfe
int fft_len
const gr::digital::constellation_sptr & constellation
const std::vector< std::vector< int > > & occupied_carriers std::vector< std::vector< int > >()
const std::vector< std::vector< int > > & pilot_carriers std::vector< std::vector< int > >()
const std::vector< std::vector< gr_complex > > & pilot_symbols std::vector< std::vector< gr_complex > >()
int symbols_skipped 0
float alpha 0.1
bool input_is_shifted true
bool enable_soft_output false
gr::digital::ofdm_equalizer_simpledfe::~ofdm_equalizer_simpledfe
() override
~ofdm_equalizer_simpledfe
gr::digital::ofdm_equalizer_simpledfe::~ofdm_equalizer_simpledfe
void void gr::digital::ofdm_equalizer_simpledfe::equalize (gr_complex *frame, int n_sym, const std::vector< gr_complex > &initial_taps=std::vector< gr_complex >(), const std::vector< tag_t > &tags=std::vector< tag_t >()) override equalize gr::digital::ofdm_equalizer_simpledfe::equalize equalize gr_complex * frame int n_sym const std::vector< gr_complex > & initial_taps std::vector< gr_complex >() const std::vector< tag_t > & tags std::vector< tag_t >()

Run the actual equalization.

sptr static sptr gr::digital::ofdm_equalizer_simpledfe::make (int fft_len, const gr::digital::constellation_sptr &constellation, const std::vector< std::vector< int > > &occupied_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< int > > &pilot_carriers=std::vector< std::vector< int > >(), const std::vector< std::vector< gr_complex > > &pilot_symbols=std::vector< std::vector< gr_complex > >(), int symbols_skipped=0, float alpha=0.1, bool input_is_shifted=true, bool enable_soft_output=false) make gr::digital::ofdm_equalizer_simpledfe::make int fft_len const gr::digital::constellation_sptr & constellation const std::vector< std::vector< int > > & occupied_carriers std::vector< std::vector< int > >() const std::vector< std::vector< int > > & pilot_carriers std::vector< std::vector< int > >() const std::vector< std::vector< gr_complex > > & pilot_symbols std::vector< std::vector< gr_complex > >() int symbols_skipped 0 float alpha 0.1 bool input_is_shifted true bool enable_soft_output false

Simple decision feedback equalizer for OFDM.

Equalizes an OFDM signal symbol by symbol using knowledge of the complex modulations symbols. For every symbol, the following steps are performed:

- On every sub-carrier, decode the modulation symbol

- Use the difference between the decoded symbol and the received symbol to update the channel state on this carrier

- Whenever a pilot symbol is found, it uses the known pilot symbol to update the channel state.

This equalizer makes a lot of assumptions:

- The initial channel state is good enough to decode the first symbol without error (unless the first symbol only consists of pilot tones)

- The channel changes only very slowly, such that the channel state from one symbol is enough to decode the next

- SNR low enough that equalization will always suffice to correctly decode a symbol If these assumptions are not met, the most common error is that the channel state is estimated incorrectly during equalization; after that, all subsequent symbols will be completely wrong.

Note that, by default, the equalized symbols are exact points on the constellation. This means that soft information of the modulation symbols is lost after the equalization, which is suboptimal for channel codes that use soft decision. If this behaviour is not desired, set the `enable_soft_output` parameter to true.

gr::digital::ofdm_equalizer_1d_pilots
gr::digital::ofdm_equalizer_base
gr::digital::ofdm_equalizer_simpledfe
std::enable_shared_from_this< ofdm_equalizer_base >
gr::digital::ofdm_equalizer_1d_pilots
d_occupied_carriers
d_pilot_carriers
d_pilot_symbols
d_channel_state
gr::digital::ofdm_equalizer_base
gr::digital::ofdm_equalizer_simpledfe
std::complex
std::enable_shared_from_this< ofdm_equalizer_base >
std::vector< bool >
std::vector< gr_complex >
elements
p
std::vector< std::vector< bool > >
elements
p
std::vector< std::vector< gr_complex > >
elements
p
- gr::digital::ofdm_equalizer_simpledfe
  base
- gr::digital::ofdm_equalizer_simpledfe
  d_alpha
- gr::digital::ofdm_equalizer_simpledfe
  d_channel_state
- gr::digital::ofdm_equalizer_simpledfe
  d_constellation
- gr::digital::ofdm_equalizer_simpledfe
  d_enable_soft_output
- gr::digital::ofdm_equalizer_simpledfe
  d_fft_len
- gr::digital::ofdm_equalizer_simpledfe
  d_occupied_carriers
- gr::digital::ofdm_equalizer_simpledfe
  d_pilot_carr_set
- gr::digital::ofdm_equalizer_simpledfe
  d_pilot_carriers
- gr::digital::ofdm_equalizer_simpledfe
  d_pilot_symbols
- gr::digital::ofdm_equalizer_simpledfe
  d_symbols_skipped
- gr::digital::ofdm_equalizer_simpledfe
  equalize
- gr::digital::ofdm_equalizer_simpledfe
  fft_len
- gr::digital::ofdm_equalizer_simpledfe
  get_channel_state
- gr::digital::ofdm_equalizer_simpledfe
  make
- gr::digital::ofdm_equalizer_simpledfe
  ofdm_equalizer_1d_pilots
- gr::digital::ofdm_equalizer_simpledfe
  ofdm_equalizer_base
- gr::digital::ofdm_equalizer_simpledfe
  ofdm_equalizer_simpledfe
- gr::digital::ofdm_equalizer_simpledfe
  reset
- gr::digital::ofdm_equalizer_simpledfe
  sptr
- gr::digital::ofdm_equalizer_simpledfe
  ~ofdm_equalizer_1d_pilots
- gr::digital::ofdm_equalizer_simpledfe
  ~ofdm_equalizer_base
- gr::digital::ofdm_equalizer_simpledfe
  ~ofdm_equalizer_simpledfe