# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# 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

 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.

`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:   `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 (MATLAB) 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.