Communications Toolbox    
decode

Block decoder

Syntax

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 For All Syntaxes section on the reference page for the encode function 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,'hamming/fmt',prim_poly) decodes 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 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,'linear/fmt',genmat,trt) decodes 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,'cyclic/fmt',genpoly,trt) decodes the cyclic code code and tries to correct errors using the decoding table trt, where trt is a 2^(n-k)-by-n matrix. genpoly is 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,'bch/fmt',t,prim_poly) decodes code using the BCH method. prim_poly is a row vector that gives the coefficients, in order of ascending powers, of the primitive polynomial for GF(2m) that will be used during processing. The default value of prim_poly is gfprimdf(m). For this syntax, n must have the form 2m-1 for some integer m greater than or equal to 3. k and t must be a valid message length and error-correction capability, respectively, as reported in the second and third columns of a row of params in the command

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, then 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 (or the rth row of vec2mat(err,k) if code is a column vector) 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:

Examples

On the reference page for encode, some of the example code illustrates the use of the decode function.

The example below illustrates the use of err and cerr when the coding method is not convolutional code and the code is a binary vector. The script encodes two five-bit messages using BCH code. Each codeword has fifteen bits. Errors are added to the first two bits of the first codeword and the first bit of the second codeword. Then decode is used to recover the original message. As a result, the errors are corrected. err is the same size as msg and cerr is the same size as code. err reflects the fact that the first message was recovered after correcting two errors, while the second message was recovered after correcting one error. cerr reflects the fact that the first codeword was decoded after correcting two errors, while the second codeword was decoded after correcting one error.

The output is below.

Algorithm

Depending on the decoding method, decode relies on such lower-level functions as hammgen, syndtable, cyclgen, and bchdeco.

See Also

encode, bchpoly, cyclpoly, syndtable, gen2par, bchdeco


  de2bi demodmap