Decode convolutionally encoded data using Viterbi algorithm
The ViterbiDecoder
object decodes input symbols
to produce binary output symbols. This object can process several
symbols at a time for faster performance. This object processes variable-size
signals; however, variable-size signals cannot be applied for erasure
inputs.
To decode input symbols and produce binary output symbols:
Define and set up your Viterbi decoder object. See Construction.
Call step
to decode input symbols
according to the properties of comm.ViterbiDecoder
.
The behavior of step
is specific to each object in
the toolbox.
Note
Starting in R2016b, instead of using the step
method
to perform the operation defined by the System object™, you can
call the object with arguments, as if it were a function. For example, y
= step(obj,x)
and y = obj(x)
perform
equivalent operations.
H = comm.ViterbiDecoder
creates a Viterbi
decoder System object, H
. This object uses
the Viterbi algorithm to decode convolutionally encoded input data.
H = comm.ViterbiDecoder(
creates
a Viterbi decoder object, Name
,Value
)H
, with each specified
property set to the specified value. You can specify additional name-value
pair arguments in any order as (Name1
,Value1
,...,NameN
,ValueN
).
H = comm.ViterbiDecoder(TRELLIS,
creates
a Viterbi decoder object, Name
,Value
)H
. This object has
the TrellisStructure
property set to TRELLIS
and
the other specified properties set to the specified values.
|
Trellis structure of convolutional code Specify the trellis as a MATLAB® structure that contains
the trellis description of the convolutional code. The default is
the result of |
|
Input format Specify the format of the input to the decoder as When you set this property to When you set this property to When you set this property to |
|
Soft input word length Specify the number of bits to represent each quantized soft input value as a positive, integer
scalar value. The default is |
|
Action when input values are out of range Specify the action the object takes when input values are out of range as
|
|
Traceback depth Specify the number of trellis branches to construct each traceback
path as a numeric, integer scalar value. The default is When you set the When you set the For more information, see Traceback and Decoding Delay and Traceback Depth Estimates. |
|
Termination method of encoded frame Specify the termination method as In In |
|
Enable decoder reset input Set this property to true to enable an additional |
|
Reset on nonzero input via port Set this property to true to delay resetting the object output. The default is false. When you
set this property to true, the reset of the internal states of the decoder occurs after the
object computes the decoded data. When you set this property to false, the reset of the
internal states of the decoder occurs before the object computes the decoded data. This
property applies when you set the |
|
Source of puncture pattern Specify the source of the puncture pattern as When you set this property to |
|
Puncture pattern vector Specify puncture pattern to puncture the encoded data. The default is |
|
Enable erasures input Set this property to The lengths of the |
|
Data type of output Specify the data type of the output as When the input signal is an integer data type, you must have
a Fixed-Point Designer™ user license to use this property in |
reset | Reset states of the Viterbi decoder object |
step | Decode convolutionally encoded data using Viterbi algorithm |
Common to All System Objects | |
---|---|
release | Allow System object property value changes |
This object implements the algorithm, inputs, and outputs described on the Viterbi Decoder block reference page. The object properties correspond to the block parameters, except:
The Decision type parameter corresponds to the InputFormat
property.
The Operation mode parameter corresponds to the TerminationMethod
property.
[1] Moision, B. "A Truncation Depth Rule of Thumb for Convolutional Codes." In Information Theory and Applications Workshop (January 27 2008-February 1 2008, San Diego, California), 555-557. New York: IEEE, 2008.