# step

System object: comm.ViterbiDecoder
Package: comm

Decode convolutionally encoded data using Viterbi algorithm

## Syntax

Y = step(H,X)
Y = step(H,X,ERASURES)
Y = step(H,X,R)

## Description

Y = step(H,X) decodes encoded data, X, using the Viterbi algorithm and returns Y. X, must be a column vector with data type and values that depend on how you set the InputFormat property. If the convolutional code uses an alphabet of 2N possible symbols, the length of the input vector, X, must be L$×$N for some positive integer L. Similarly, if the decoded data uses an alphabet of 2K possible output symbols, the length of the output vector, Y, is L$×$K.

Y = step(H,X,ERASURES) uses the binary column input vector, ERASURES, to erase the symbols of the input codewords. The elements in ERASURES must be of data type double or logical. Values of 1 in the ERASURES vector correspond to erased symbols, and values of 0 correspond to non-erased symbols. The lengths of the X and ERASURES inputs must be the same. This syntax applies when you set the ErasuresInputPort property to true.

Y = step(H,X,R) resets the internal states of the decoder when you input a non-zero reset signal, R. R must be a double precision or logical scalar. This syntax applies when you set the TerminationMethod property to Continuous and the ResetInputPort property to true.

 Note:   H specifies the System object™ on which to run this step method.The object performs an initialization the first time the step method is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.