decode
Block decoder
Syntax
msg = decode(code,n,k,'
hamming/
fmt
',prim_poly)
msg = decode(code,n,k,'linear/
fmt
',genmat,trt)
msg = decode(code,n,k,'cyclic/
fmt
',genpoly,trt)
msg = decode(code,n,k)
[msg,err] = decode(...)
[msg,err,ccode] = decode(...)
[msg,err,ccode,cerr] = decode(...)
Optional Inputs
Input | Default Value |
---|---|
fmt | binary
|
prim_poly | gfprimdf(m) where n = 2^m-1 |
genpoly | cyclpoly (n,k) |
trt | Uses syndtable to
create the syndrome decoding table associated with the method's parity-check
matrix |
Description
For All Syntaxes
The decode
function aims to recover messages
that were encoded using an error-correction coding technique. The
technique and the defining parameters must match those that were used
to encode the original signal.
The
encode
reference page explains the
meanings of n
and k
, the possible values of
fmt
, and the possible formats for
code
and msg
. You should be familiar with
the conventions described there before reading the rest of this section. Using the
decode
function with an input argument
code
that was not created by the
encode
function might cause errors.
For Specific Syntaxes
msg = decode(code,n,k,'
decodes hamming/
fmt
',prim_poly)code
using the Hamming method. For this syntax,
n
must have the form 2m-1 for some
integer m greater than or equal to 3, and k
must equal
n
-m. prim_poly
is a polynomial character vector
or a row vector that gives the binary coefficients, in order of ascending powers, of
the primitive polynomial for GF(2m) that is used in the
encoding process. The default value of prim_poly
is gfprimdf
(m). The decoding table that the function uses to correct a
single error in each codeword is syndtable
(hammgen
(m)).
msg = decode(code,n,k,'
decodes linear/
fmt
',genmat,trt)code
, which is a linear block code determined by the
k
-by-n
generator matrix
genmat
. genmat
is required as input.
decode
tries to correct errors using the decoding table
trt
, where trt
is a
2^(n-k)
-by-n
matrix.
msg = decode(code,n,k,'
decodes the cyclic code cyclic/
fmt
',genpoly,trt)code
and tries to correct errors using
the decoding table trt
, where trt
is a
2^(n-k)
-by-n
matrix.
genpoly
is a polynomial character vector
or a row vector that gives the coefficients, in order of ascending powers, of the
binary generator polynomial of the code. The default value of
genpoly
is cyclpoly
(n,k)
. By definition, the generator
polynomial for an [n
, k
] cyclic code must have
degree n-k
and must divide
xn-1
.
msg = decode(code,n,k)
is
the same as msg = decode(code,n,k,'hamming/binary')
.
[msg,err] = decode(...)
returns a column vector
err
that gives information about error correction. If the
code is a convolutional code, err
contains the metric
calculations used in the decoding decision process. For other types of codes, a
nonnegative integer in the rth row of err
indicates the number of
errors corrected in the rth message word; a negative integer
indicates that there are more errors in the rth word than can be corrected.
[msg,err,ccode] = decode(...)
returns
the corrected code in ccode
.
[msg,err,ccode,cerr] = decode(...)
returns
a column vector cerr
whose meaning depends on the
format of code
:
If
code
is a binary vector, a nonnegative integer in the rth row ofvec2mat
cerr
indicates the number of errors corrected in the rth codeword; a negative integer indicates that there are more errors in the rth codeword than can be corrected.If
code
is not a binary vector,cerr = err
.
Examples
Algorithms
Depending on the decoding method, decode
relies
on such lower-level functions as hammgen
, syndtable
, and cyclgen
.
Version History
Introduced before R2006a