|
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>
|
Additive White Gaussian Noise channel for complex-valued symbols. More...
#include <blocks.hpp>

Public Member Functions | |
| AWGN (double EbNodB, double a, double b) | |
| Construct with SNR and constellation parameters. | |
| std::complex< double > | operator() (const std::complex< double > &in) |
| Add Gaussian noise to a complex symbol. | |
| double | get_capacity () const noexcept |
| Shannon capacity in bits per symbol (real signaling). | |
Noise Parameters | |
| double | get_variance () const noexcept |
| Noise variance σ² (per real component). | |
| double | get_standard_deviation () const noexcept |
| Noise standard deviation σ (per real component). | |
| constexpr double | get_pe () const noexcept |
| Theoretical hard-decision bit error probability for the configured constellation/SNR. | |
| Public Member Functions inherited from CECCO::details::BlockProcessor< T, ElementType, ElementType > | |
| Vector< ElementType > | operator() (const Vector< ElementType > &in) |
| Apply the block element-wise to each vector entry. | |
| Vector< ElementType > | operator() (Vector< ElementType > &&in) |
| Apply the block element-wise (rvalue input). | |
| Matrix< ElementType > | operator() (const Matrix< ElementType > &in) |
| Apply the block element-wise to each matrix entry. | |
| Matrix< ElementType > | operator() (Matrix< ElementType > &&in) |
| Apply the block element-wise (rvalue input). | |
| ElementType | operator() (const U &) |
| Catch-all for inputs whose element type differs from InputType. | |
| Vector< ElementType > | operator() (const Vector< U > &) |
| Matrix< ElementType > | operator() (const Matrix< U > &) |
Additional Inherited Members | |
| Protected Member Functions inherited from CECCO::details::BlockProcessor< T, ElementType, ElementType > | |
| const T & | derived () const noexcept |
| T & | derived () noexcept |
Additive White Gaussian Noise channel for complex-valued symbols.
Adds independent 𝒩(0, σ²) noise to the real and imaginary parts of each input symbol. The noise variance is derived from the SNR Eb/N₀ and the constellation parameters supplied at construction: σ² = Eb / (2 · 10^(EbN0dB/10)).
For NRZ/BPSK input the bit error probability after a hard decision is Pe = ½ · erfc(√( b²·Eb/N₀ / (4·Eb) )), available via get_pe.
Definition at line 539 of file blocks.hpp.
|
inline |
Construct with SNR and constellation parameters.
| EbNodB | SNR Eb/N₀ in dB |
| a | DC offset of the source constellation |
| b | Constellation distance of the source constellation |
Definition at line 550 of file blocks.hpp.


|
inlinenoexcept |
Shannon capacity in bits per symbol (real signaling).
For complex signaling with noise on both I and Q the formula is C = log₂(1 + Eb/(2σ²)).
Definition at line 589 of file blocks.hpp.

|
inlineconstexprnoexcept |
Theoretical hard-decision bit error probability for the configured constellation/SNR.
Definition at line 569 of file blocks.hpp.
|
inlinenoexcept |
Noise standard deviation σ (per real component).
Definition at line 566 of file blocks.hpp.

|
inlinenoexcept |
Noise variance σ² (per real component).
Definition at line 560 of file blocks.hpp.

|
inline |
Add Gaussian noise to a complex symbol.
| in | Input symbol |
Definition at line 578 of file blocks.hpp.