Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Reed-Solomon decoder

`decoded = rsdec(code,n,k)`

decoded = rsdec(code,n,k,genpoly)

decoded = rsdec(...,* paritypos*)

[decoded,cnumerr] = rsdec(...)

[decoded,cnumerr,ccode] = rsdec(...)

`decoded = rsdec(code,n,k)`

attempts
to decode the received signal in `code`

using an
[`n`

,`k`

] Reed-Solomon decoding
process with the narrow-sense generator polynomial. `code`

is
a Galois
array of symbols having m bits each. Each `n`

-element
row of `code`

represents a corrupted systematic codeword,
where the parity symbols are at the end and the leftmost symbol is
the most significant symbol. `n`

is at most 2^{m}-1.
If `n`

is not exactly 2^{m}-1, `rsdec`

assumes
that `code`

is a corrupted version of a shortened
code.

In the Galois array `decoded`

, each row represents
the attempt at decoding the corresponding row in `code`

.
A *decoding failure* occurs if `rsdec`

detects
more than `(n-k)/2`

errors in a row of `code`

.
In this case, `rsdec`

forms the corresponding row
of `decoded`

by merely removing `n-k`

symbols
from the end of the row of `code`

.

`decoded = rsdec(code,n,k,genpoly)`

is
the same as the syntax above, except that a nonempty value of `genpoly`

specifies
the generator polynomial for the code. In this case, `genpoly`

is
a Galois row vector that lists the coefficients, in order of descending
powers, of the generator polynomial. The generator polynomial must
have degree `n-k`

. To use the default narrow-sense
generator polynomial, set `genpoly`

to `[]`

.

`decoded = rsdec(...,`

specifies whether the parity symbols in * paritypos*)

`code`

were appended or
prepended to the message in the coding operation. `paritypos`

`'end'`

or `'beginning'`

. The default is
`'end'`

. If `paritypos`

`'beginning'`

, a decoding failure causes `rsdec`

to remove `n-k`

symbols from the beginning rather than the end of the
row.`[decoded,cnumerr] = rsdec(...)`

returns
a column vector `cnumerr`

, each element of which
is the number of corrected errors in the corresponding row of `code`

.
A value of `-1`

in `cnumerr`

indicates
a decoding failure in that row in `code`

.

`[decoded,cnumerr,ccode] = rsdec(...)`

returns `ccode`

,
the corrected version of `code`

. The Galois array `ccode`

has
the same format as `code`

. If a decoding failure
occurs in a certain row of `code`

, the corresponding
row in `ccode`

contains that row unchanged.

`n`

and `k`

must differ by
an even integer. `n`

must be between 3 and 65535.

`rsdec`

uses the Berlekamp-Massey decoding
algorithm. For information about this algorithm, see the works listed
in References below.

[1] Wicker, S. B., *Error Control
Systems for Digital Communication and Storage*, Upper Saddle
River, NJ, Prentice Hall, 1995.

[2] Berlekamp, E. R., *Algebraic
Coding Theory*, New York, McGraw-Hill, 1968.