Communications Toolbox    
decode

Block decoder

Syntax

Optional Inputs

Input
Default Value
format
binary
primpoly
gfprimdf(m) where n = 2m-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 format, 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 may cause errors.

For Specific Syntaxes

msg = decode(code,n,k,'hamming/format',primpoly) 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. primpoly 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 primpoly 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/format',genmat,trt) decodes code, which is a linear block code determined by the k-by-n generator matrix genmat. genmat, a k-by-n matrix, is required as input. decode tries to correct errors using the decoding table trt, where trt is a 2n-k-by-n matrix.

msg = decode(code,n,k,'cyclic/format',genpoly,trt) decodes the cyclic code code and tries to correct errors using the decoding table trt, where trt is a 2n-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/format',errorcorr,primpoly) decodes code using the BCH method. primpoly 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 primpoly 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 errorcorr 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,'rs/format',field) decodes code using the Reed-Solomon method. n must have the form 2m-1 for some integer m greater than or equal to 3. field is a matrix that lists all elements of GF(2m) in the format described in List of All Elements of a Galois Field. The default value of field is gftuple([-1:2^m-2]',m).

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, bchdeco, and rsdeco.

See Also

encode, hammgen, syndtable, cyclpoly, cyclgen, bchpoly, bchdeco, rspoly, rsdeco, rsdecode, vitdec


 de2bi demodmap