#include <mapalgorithm.h>
Inheritance diagram for simthlib::LogMapAlgorithmAbstract:
Public Member Functions | |
LogMapAlgorithmAbstract (std::auto_ptr< Trellis > usedTrellis) | |
virtual | ~LogMapAlgorithmAbstract () |
virtual void | softout4Output (const simth::LlvSeq &metr, simth::LlrSeq *softout, const simth::LlrSeq *apri) |
virtual void | softout4Input (const simth::LlvSeq &metr, simth::LlrSeq *softout, const simth::LlrSeq *apri) |
virtual void | decode (const simth::LlvSeq &metr, simth::BitSeq *decodedData, const simth::LlrSeq *apri) |
Protected Member Functions | |
double | sigma () |
void | forwardrecursion (const simth::LlvSeq &channelMetr, const simth::LlrSeq *apri=NULL) |
std::vector< double > | backwardrecursion (const int endState=0) |
void | initialize_alpha () |
void | initialize_beta () |
void | set_gammas (simth::LlvSeq &metr, simth::LlrSeq *apri) |
virtual void | set_alpha (const int index)=0 |
virtual double | set_beta (const int index)=0 |
virtual void | calculate_llr (simth::LlrSeq *softout)=0 |
virtual double | calculate_gamma (double metricValue, int index, const simth::LlrSeq *apri)=0 |
virtual double | calculate_beta (const std::vector< double > *beta, const std::vector< double > *gamma, const int t, const int l, const int ms)=0 |
Protected Attributes | |
simth::Array2d< double > | alpha |
simth::Array2d< double > | beta |
simth::Array2d< double > | gamma |
The MAP algorithm calculates for each bit in the sequence a log-likelihood value. This is done by using the following probabilities at a certain point in time:
The MAP algorithm has the following steps:
The first three steps are collected in the forward recursion. Steps 4 and 5 are collected in the backward recursion.
This abstract class gives a framework for the different versions of the MAP algorithm. Implemented are the forward and the backward recursion, the structure of these are common between all versions of the MAP algorithm.
|
|
|
|
|
Performs the backward recursion of the MAP algorithm. So the beta values are computed here. |
|
Computes the values for the vector beta, given the knowledge of the next values in beta and the transition probabilities in the vector gamma. t and l gives the indeces in the vectors. |
|
Computes the transition probabilities gamma depending on the given metric and the apriori information. |
|
Computes the Log-Likelihood Ratio. The LLR values are stored in softout. |
|
Decodes the given soft-information of the the coded bits. This could be useful for example to reduce computational complexity when in the last iteration of a turbo decoding procedure only the hard estimated bits are required. Implements simthlib::TrellisSoftoutAlgorithm. |
|
Performs the forward recursion of the MAP algorithm. So the alpha values and the gamma values are computed here. |
|
Initializes the first ms probabilities of the vector alpha. |
|
Initializes the first ms probabilities of the vector alpha. |
|
Sets the alpha values at the given index dependinging on the alpha value of index-1 and the the gamma values that have to be computed by set_gamma(). Implemented in simthlib::MaxLogMap. |
|
Set the alpha values at the given index, due to the beta value of index-1 and the the gamma values that have to be computed by set_gamma(). |
|
Computes all gamma values depending on the given channel and aprior softinput information. |
|
Returns sigma_, the mean noise rate. |
|
Computes soft-output information for the input of the decoding algorithm, i.e. the coded bits. Implements simthlib::TrellisSoftoutAlgorithm. |
|
Computes soft-output information for the output of the decoding algorithm, i.e. the information bits. Implements simthlib::TrellisSoftoutAlgorithm. |
|
|
|
|
|
|