C(++)ECCO
C++ Error Control COding: a header-only library for ECC simulations and experiments, modeling complete coding systems across arbitrary finite fields and complex inter-field relationships - Christian Senger <senger@inue.uni-stuttgart.de>
Loading...
Searching...
No Matches
CECCO::NRZDemapper Class Reference

Non-Return-to-Zero (NRZ) hard-decision demapper. More...

#include <blocks.hpp>

Inheritance diagram for CECCO::NRZDemapper:
Inheritance graph

Public Member Functions

constexpr NRZDemapper (const NRZMapper &nrz) noexcept
 Construct from the corresponding mapper.
 NRZDemapper (const BI_AWGN &bi_awgn) noexcept
 Construct from a BI-AWGN channel (convenience).
constexpr Fp< 2 > operator() (const std::complex< double > &in) noexcept
 Hard-decide a received symbol.
Public Member Functions inherited from CECCO::details::BlockProcessor< T, std::complex< double >, Fp< 2 > >
Vector< Fp< 2 > > operator() (const Vector< std::complex< double > > &in)
 Apply the block element-wise to each vector entry.
Vector< Fp< 2 > > operator() (Vector< std::complex< double > > &&in)
 Apply the block element-wise (rvalue input).
Matrix< Fp< 2 > > operator() (const Matrix< std::complex< double > > &in)
 Apply the block element-wise to each matrix entry.
Matrix< Fp< 2 > > operator() (Matrix< std::complex< double > > &&in)
 Apply the block element-wise (rvalue input).
Fp< 2 > operator() (const U &)
 Catch-all for inputs whose element type differs from InputType.
Vector< Fp< 2 > > operator() (const Vector< U > &)
Matrix< Fp< 2 > > operator() (const Matrix< U > &)

Additional Inherited Members

Protected Member Functions inherited from CECCO::details::BlockProcessor< T, std::complex< double >, Fp< 2 > >
const T & derived () const noexcept
T & derived () noexcept

Detailed Description

Non-Return-to-Zero (NRZ) hard-decision demapper.

Maximum-likelihood threshold detector for NRZ-modulated symbols received over AWGN: outputs 1 if Re(r) ≥ a, otherwise 0, where a is the DC offset of the corresponding CECCO::NRZMapper. The imaginary part is ignored.

NRZMapper map(0.5, 1.0); // Constellation: {0, 1}
NRZDemapper demap(map); // Threshold at a = 0.5
Vector<std::complex<double>> y = {{0.3, 0.1}, {0.8, −0.2}};
Vector<Fp<2>> c_est = y >> demap; // {0, 1}
constexpr NRZDemapper(const NRZMapper &nrz) noexcept
Construct from the corresponding mapper.
Definition blocks.hpp:754
Non-Return-to-Zero (NRZ) mapper for binary modulation.
Definition blocks.hpp:462
Vector v = (v₀, v₁, …, vₙ₋₁) over a CECCO::ComponentType.
Definition vectors.hpp:115
See also
CECCO::NRZMapper, CECCO::BPSKDemapper, CECCO::LLRCalculator

Definition at line 745 of file blocks.hpp.

Constructor & Destructor Documentation

◆ NRZDemapper() [1/2]

CECCO::NRZDemapper::NRZDemapper ( const NRZMapper & nrz)
inlineconstexprnoexcept

Construct from the corresponding mapper.

Parameters
nrzSource mapper whose DC offset becomes the decision threshold

Definition at line 754 of file blocks.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NRZDemapper() [2/2]

CECCO::NRZDemapper::NRZDemapper ( const BI_AWGN & bi_awgn)
inlinenoexcept

Construct from a BI-AWGN channel (convenience).

Parameters
bi_awgnChannel whose internal mapper provides the decision threshold

Definition at line 760 of file blocks.hpp.

Here is the call graph for this function:

Member Function Documentation

◆ operator()()

Fp< 2 > CECCO::NRZDemapper::operator() ( const std::complex< double > & in)
inlineconstexprnoexcept

Hard-decide a received symbol.

Parameters
inReceived complex value (imaginary part ignored)
Returns
1 if Re(in) ≥ a, else 0

Definition at line 767 of file blocks.hpp.


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