Main Content


System object: comm.gpu.ViterbiDecoder
Package: comm

Decode convolutionally encoded data using Viterbi algorithm


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



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.

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 2^N 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 2^K possible output symbols, the length of the output vector, Y, is L*K.

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, single precision or logical scalar. This syntax applies when you set the TerminationMethod property to Continuous and the ResetInputPort property to true.


obj 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.