|
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 Viterbi decoding on this trellis. More...
#include <trellises.hpp>
Public Member Functions | |
| Viterbi_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 &tr, const Vector< double > &llrs) |
| Set soft edge costs from binary LLRs. | |
Public Attributes | |
| std::vector< cost_t > | path_costs_prev |
| Path costs from the previous layer. | |
| std::vector< cost_t > | path_costs_curr |
| Path costs for the current layer. | |
| std::vector< std::vector< const details::Edge< T > * > > | backptrs |
| Backpointer selected for each vertex and layer. | |
| std::vector< uint16_t > | tie_counts |
| Number of equal-cost paths seen for randomized tie-breaking. | |
| std::vector< std::vector< cost_t > > | edge_costs |
| Edge cost for each segment and edge index. | |
| std::optional< std::variant< Vector< T >, Vector< double > > > | v |
| Optional received vector shown in TikZ output. | |
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 |
| Initial path cost used for unreachable vertices. | |
Workspace for Viterbi decoding on this trellis.
| cost_t | Integral type for hard-decision costs or floating-point type for soft costs |
Stores path metrics for two adjacent layers, edge costs, tie counts, and backpointers. Construct it from the trellis before calling the Viterbi routines in codes.hpp.
Definition at line 184 of file trellises.hpp.
|
explicit |
Allocate metric arrays for tr.
| tr | Trellis whose layer and edge sizes define the workspace |
Definition at line 451 of file trellises.hpp.
| void CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::calculate_edge_costs | ( | const Trellis & | tr, |
| const Vector< double > & | llrs ) |
Set soft edge costs from binary LLRs.
| tr | Binary trellis whose edges define candidate bits |
| llrs | Log-likelihood ratios; length must equal the number of segments |
| std::invalid_argument | if llrs.get_n() != tr.E.size() |
Definition at line 483 of file trellises.hpp.
| void CECCO::Trellis< T >::Viterbi_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() |
With erasure support, erased received symbols give cost 0 on all outgoing labels.
Definition at line 466 of file trellises.hpp.
| std::vector<std::vector<const details::Edge<T>*> > CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::backptrs |
Backpointer selected for each vertex and layer.
Definition at line 225 of file trellises.hpp.
| std::vector<std::vector<cost_t> > CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::edge_costs |
Edge cost for each segment and edge index.
Definition at line 229 of file trellises.hpp.
|
staticconstexpr |
Initial path cost used for unreachable vertices.
Definition at line 188 of file trellises.hpp.
|
staticconstexpr |
True for floating-point soft metrics.
Definition at line 186 of file trellises.hpp.
| std::vector<cost_t> CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::path_costs_curr |
Path costs for the current layer.
Definition at line 223 of file trellises.hpp.
| std::vector<cost_t> CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::path_costs_prev |
Path costs from the previous layer.
Definition at line 221 of file trellises.hpp.
| std::vector<uint16_t> CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::tie_counts |
Number of equal-cost paths seen for randomized tie-breaking.
Definition at line 227 of file trellises.hpp.
| std::optional<std::variant<Vector<T>, Vector<double> > > CECCO::Trellis< T >::Viterbi_Workspace< cost_t >::v |
Optional received vector shown in TikZ output.
Definition at line 231 of file trellises.hpp.