# Documentation

### This is machine translation

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

# distspec

Compute distance spectrum of convolutional code

## Syntax

```spect = distspec(trellis,n) spect = distspec(trellis) ```

## Description

`spect = distspec(trellis,n)` computes the free distance and the first `n` components of the weight and distance spectra of a linear convolutional code. Because convolutional codes do not have block boundaries, the weight spectrum and distance spectrum are semi-infinite and are most often approximated by the first few components. The input `trellis` is a valid MATLAB trellis structure, as described in Trellis Description of a Convolutional Code. The output, `spect`, is a structure with these fields:

FieldMeaning
`spect.dfree`Free distance of the code. This is the minimum number of errors in the encoded sequence required to create an error event.
`spect.weight`A length-`n` vector that lists the total number of information bit errors in the error events enumerated in `spect.event`.
`spect.event`A length-`n` vector that lists the number of error events for each distance between `spect.dfree` and `spect.dfree+n-1`. The vector represents the first `n` components of the distance spectrum.

`spect = distspec(trellis)` is the same as `spect = distspec(trellis,1)`.

## Examples

The example below performs these tasks:

• Computes the distance spectrum for the rate 2/3 convolutional code that is depicted on the reference page for the `poly2trellis` function

• Uses the output of `distspec` as an input to the `bercoding` function, to find a theoretical upper bound on the bit error rate for a system that uses this code with coherent BPSK modulation

• Plots the upper bound using the `berfit` function

```trellis = poly2trellis([5 4],[23 35 0; 0 5 13]) spect = distspec(trellis,4) berub = bercoding(1:10,'conv','hard',2/3,spect); % BER bound berfit(1:10,berub); ylabel('Upper Bound on BER'); % Plot.```

The output and plot are below.

```trellis = numInputSymbols: 4 numOutputSymbols: 8 numStates: 128 nextStates: [128x4 double] outputs: [128x4 double] spect = dfree: 5 weight: [1 6 28 142] event: [1 2 8 25]```

## Algorithms

The function uses a tree search algorithm implemented with a stack, as described in [2].

## References

[1] Bocharova, I. E., and B. D. Kudryashov, “Rational Rate Punctured Convolutional Codes for Soft-Decision Viterbi Decoding,” IEEE Transactions on Information Theory, Vol. 43, No. 4, July 1997, pp. 1305–1313.

[2] Cedervall, M., and R. Johannesson, “A Fast Algorithm for Computing Distance Spectrum of Convolutional Codes,” IEEE Transactions on Information Theory, Vol. 35, No. 6, Nov. 1989, pp. 1146–1159.

[3] Chang, J., D. Hwang, and M. Lin, “Some Extended Results on the Search for Good Convolutional Codes,” IEEE Transactions on Information Theory, Vol. 43, No. 5, Sep. 1997, pp. 1682–1697.

[4] Frenger, P., P. Orten, and T. Ottosson, “Comments and Additions to Recent Papers on New Convolutional Codes,” IEEE Transactions on Information Theory, Vol. 47, No. 3, March 2001, pp. 1199–1201.