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::BI_AWGN Class Reference

Binary-Input AWGN — fused NRZMapper + AWGN block. More...

#include <blocks.hpp>

Inheritance diagram for CECCO::BI_AWGN:
Inheritance graph

Public Member Functions

 BI_AWGN (double EbN0dB, double a=0.0, double b=2.0)
 Construct with SNR and constellation parameters.
std::complex< double > operator() (const Fp< 2 > &in)
 Map a bit and add noise.
const NRZMapperget_encoder () const noexcept
 Internal NRZ mapper (for constructing matching demappers/LLR calculators).
const AWGNget_transmission () const noexcept
 Internal AWGN block (for noise statistics).
double get_capacity () const noexcept
 Shannon capacity in bits per symbol.
constexpr double get_pe () const noexcept
 Theoretical hard-decision bit error probability for this constellation/SNR.
double get_sigma () const noexcept
 Noise standard deviation σ.
long double get_Bhattacharyya_param () const noexcept
 Bhattacharyya parameter γ = exp(−b²/(8σ²)).
Public Member Functions inherited from CECCO::details::BlockProcessor< BI_AWGN, Fp< 2 >, std::complex< double > >
Vector< std::complex< double > > operator() (const Vector< Fp< 2 > > &in)
 Apply the block element-wise to each vector entry.

Additional Inherited Members

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

Detailed Description

Binary-Input AWGN — fused NRZMapper + AWGN block.

Maps binary inputs through an internal NRZMapper and then through AWGN, yielding noisy complex symbols ready for hard decision (NRZDemapper) or soft decision (LLRCalculator). Default parameters give BPSK (a = 0, b = 2).

BI_AWGN channel(6.0); // BPSK at 6 dB
Vector<Fp<2>> c = {1, 0, 1, 0};
Vector<Fp<2>> r = c >> channel >> NRZDemapper(channel); // hard decisions
BI_AWGN(double EbN0dB, double a=0.0, double b=2.0)
Construct with SNR and constellation parameters.
Definition blocks.hpp:644
Non-Return-to-Zero (NRZ) hard-decision demapper.
Definition blocks.hpp:745
Vector v = (v₀, v₁, …, vₙ₋₁) over a CECCO::ComponentType.
Definition vectors.hpp:115
See also
CECCO::AWGN, CECCO::NRZDemapper, CECCO::LLRCalculator

Definition at line 634 of file blocks.hpp.

Constructor & Destructor Documentation

◆ BI_AWGN()

CECCO::BI_AWGN::BI_AWGN ( double EbN0dB,
double a = 0.0,
double b = 2.0 )
inline

Construct with SNR and constellation parameters.

Parameters
EbN0dBSNR Eb/N₀ in dB
aNRZ DC offset (default 0 for BPSK)
bNRZ constellation distance (default 2 for BPSK)

Definition at line 644 of file blocks.hpp.

Here is the call graph for this function:

Member Function Documentation

◆ get_Bhattacharyya_param()

long double CECCO::BI_AWGN::get_Bhattacharyya_param ( ) const
inlinenoexcept

Bhattacharyya parameter γ = exp(−b²/(8σ²)).

Definition at line 676 of file blocks.hpp.

Here is the call graph for this function:

◆ get_capacity()

double CECCO::BI_AWGN::get_capacity ( ) const
noexcept

Shannon capacity in bits per symbol.

Returns
C ∈ [0, 1], computed by composite Simpson's rule (no closed form for BI-AWGN).

Returns 0 if the constellation distance is 0 and 1 if the noise vanishes.

Definition at line 687 of file blocks.hpp.

Here is the call graph for this function:

◆ get_encoder()

const NRZMapper & CECCO::BI_AWGN::get_encoder ( ) const
inlinenoexcept

Internal NRZ mapper (for constructing matching demappers/LLR calculators).

Definition at line 654 of file blocks.hpp.

Here is the caller graph for this function:

◆ get_pe()

double CECCO::BI_AWGN::get_pe ( ) const
inlineconstexprnoexcept

Theoretical hard-decision bit error probability for this constellation/SNR.

Definition at line 668 of file blocks.hpp.

◆ get_sigma()

double CECCO::BI_AWGN::get_sigma ( ) const
inlinenoexcept

Noise standard deviation σ.

Definition at line 671 of file blocks.hpp.

◆ get_transmission()

const AWGN & CECCO::BI_AWGN::get_transmission ( ) const
inlinenoexcept

Internal AWGN block (for noise statistics).

Definition at line 657 of file blocks.hpp.

Here is the caller graph for this function:

◆ operator()()

std::complex< double > CECCO::BI_AWGN::operator() ( const Fp< 2 > & in)
inline

Map a bit and add noise.

Parameters
inInput bit
Returns
NRZ symbol corrupted by AWGN

Definition at line 651 of file blocks.hpp.


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