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? (MATLAB).
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]. 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 preoutput
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.” JPL TDA Progress Report, Vol. 42-127, November 1996.
[2] 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.
[3] 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.