|
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>
|
Workspace for list-output Viterbi decoding on this trellis. More...
#include <graphs.hpp>
Public Member Functions | |
| ListViterbi_Workspace (const Trellis &tr) | |
| Allocate metric arrays for tr. | |
| void | calculate_edge_costs (const Trellis &tr, const Vector< T > &r) |
| Set hard-decision edge costs from received word r. | |
| void | calculate_edge_costs (const Trellis &trellis, const Matrix< double > &llrs) |
| Set soft edge costs from symbol-level LLRs. | |
Public Attributes | |
| std::vector< std::vector< cost_t > > | edge_costs |
| Edge cost for each segment and edge index. | |
| std::vector< std::vector< cost_t > > | cost_to_go |
| Minimum cost from each vertex (by layer and id) to any final-layer vertex. | |
Static Public Attributes | |
| static constexpr bool | is_soft = std::is_floating_point_v<cost_t> |
| True for floating-point soft metrics. | |
| static constexpr cost_t | init |
| Cost of an unreachable vertex or an infeasible path. | |
Workspace for list-output Viterbi decoding on this trellis.
| cost_t | Integral type for hard-decision costs or floating-point type for soft costs |
Stores edge costs by segment and, for the priority-first path enumeration, the backward cost-to-go from every vertex to the final layer. Construct it from the trellis before calling the list Viterbi routine in codes.hpp.
Definition at line 299 of file graphs.hpp.
|
explicit |
Allocate metric arrays for tr.
| tr | Trellis whose layer and edge sizes define the workspace |
Definition at line 601 of file graphs.hpp.
| void CECCO::Trellis< T >::ListViterbi_Workspace< cost_t >::calculate_edge_costs | ( | const Trellis & | tr, |
| const Vector< T > & | r ) |
Set hard-decision edge costs from received word r.
| tr | Trellis whose edges define candidate symbols |
| r | Received word; length must equal the number of segments |
| std::invalid_argument | if r.get_n() != tr.E.size() |
Definition at line 612 of file graphs.hpp.
| void CECCO::Trellis< T >::ListViterbi_Workspace< cost_t >::calculate_edge_costs | ( | const Trellis & | trellis, |
| const Matrix< double > & | llrs ) |
Set soft edge costs from symbol-level LLRs.
| trellis | Trellis whose edges define candidate symbols |
| llrs | Symbol-level LLR matrix with q−1 rows and one column per segment |
| std::invalid_argument | if the LLR matrix has the wrong number of rows or columns |
Definition at line 629 of file graphs.hpp.
| std::vector<std::vector<cost_t> > CECCO::Trellis< T >::ListViterbi_Workspace< cost_t >::cost_to_go |
Minimum cost from each vertex (by layer and id) to any final-layer vertex.
Definition at line 336 of file graphs.hpp.
| std::vector<std::vector<cost_t> > CECCO::Trellis< T >::ListViterbi_Workspace< cost_t >::edge_costs |
Edge cost for each segment and edge index.
Definition at line 334 of file graphs.hpp.
|
staticconstexpr |
Cost of an unreachable vertex or an infeasible path.
Definition at line 303 of file graphs.hpp.
|
staticconstexpr |
True for floating-point soft metrics.
Definition at line 301 of file graphs.hpp.