Decode convolutional code by using APP method
The APPDecoder
system object performs a posteriori
probability (APP) decoding of a convolutional code.
To decode convolutional code by using APP method:
Create the comm.APPDecoder
object and set its properties.
Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects?.
appDec = comm.APPDecoder
creates an APP decoder System object™, appDec
, that decodes a convolutional code using the
APP method.
appDec = comm.APPDecoder(
sets properties using one or more name-value pairs. For example,
Name
,Value
)comm.APPDecoder('Algorithm','True APP')
configures the System object, appDec
, to implement true a posteriori probability
decoding. Enclose each property name in quotes.
appDec = comm.APPDecoder(trellis,
creates an APP decoder object, Name
,Value
)appDec
, with the TrellisStructure property set to trellis
.
[
performs APP decoding on the sequence of LLRs of encoder input bits,
LUD
,LCD
] = appDec(LU
,LC
)LU
, and the sequence of LLRs of encoded bits,
LC
. The System object returns LUD
and LCD
. These output
values are the updated versions of LU
and LC
,
respectively, and are obtained based on the encoder information.
performs APP decoding with the LUD
= appDec(LU
,LC
)LCD
output disabled. To disable the
LCD
output, set the CodedBitLLROutputPort property to
0
(false
).
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named obj
, use
this syntax:
release(obj)
This System object implements the soft-input-soft-output APP decoding algorithm according to [1] and [2].
The 'True APP'
option of the Algorithm
property implements APP decoding as per the equations 20–23 in section V of [1]. To gain speed, the 'Max*'
and 'Max'
values of the Algorithm
property approximate expressions like by other quantities. The 'Max'
option uses max(ai) as the approximation. The 'Max*'
option uses max(ai) plus a correction term given by the expression .
Setting the Algorithm
property to 'Max*'
enables the
NumScalingBits
property of this System object. This property denotes the number of bits by which this System object scales the data it processes internally (multiplies the input by
2NumScalingBits
and divides the
pre-output by the same factor). Use this property to avoid losing precision during
computations.
[1] Benedetto, S., G. Montorsi, D. Divsalar, and F. Pollara. "A Soft-Input Soft-Output Maximum A Posterior (MAP) Module to Decode Parallel and Serial Concatenated Codes." Jet Propulsion Lab TDA Progress Report, 42–127, (November 1996).
[2] Viterbi, A.J. “An Intuitive Justification and a Simplified Implementation of the MAP Decoder for Convolutional Codes.” IEEE Journal on Selected Areas in Communications 16, no. 2 (February 1998): 260–64. https://doi.org/10.1109/49.661114.
[3] Benedetto, S., and G. Montorsi. “Performance of Continuous and Blockwise Decoded Turbo Codes.” IEEE Communications Letters 1, no. 3 (May 1997): 77–79. https://doi.org/10.1109/4234.585802.