Communications Toolbox    
encode

Block encoder

Syntax

Optional Inputs

Input
Default Value
fmt
binary
genpoly
cyclpoly(n,k) for cyclic codes;
bchpoly(n,k) for BCH codes
prim_poly
gfprimdf(n-k)

Description

For All Syntaxes

The encode function encodes messages using one of the following error-correction coding methods:

For all of these methods, the codeword length is n and the message length is k.

msg, which represents the messages, can have one of several formats. The table Information Formats below shows which formats are allowed for msg, how the argument fmt should reflect the format of msg, and how the format of the output code depends on these choices. The examples in the table are for k = 4. If fmt is not specified as input, then its default value is binary.

Information Formats 
Format of msg
Value of "fmt" Argument
Format of code
Binary column vector
binary
Binary column vector
Example: msg = [0 1 1 0, 0 1 0 1, 1 0 0 1]'
Binary matrix with k columns
binary
Binary matrix with n columns
Example: msg = [0 1 1 0; 0 1 0 1; 1 0 0 1]
Column vector of integers in the range [0, 2^k-1]
decimal
Column vector of integers in the range [0, 2^n-1]
Example: msg = [6, 10, 9]'

For Specific Syntaxes

code = encode(msg,n,k,'linear/fmt',genmat) encodes msg using genmat as the generator matrix for the linear block encoding method. genmat, a k-by-n matrix, is required as input.

code = encode(msg,n,k,'cyclic/fmt',genpoly) encodes msg and creates a systematic cyclic code. genpoly is a row vector that gives the coefficients, in order of ascending powers, of the binary generator polynomial. 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.

code = encode(msg,n,k,'bch/fmt',genpoly) encodes msg using the BCH encoding method. genpoly is a row vector that gives the coefficients, in order of ascending powers, of the degree-(n-k) binary BCH generator polynomial. The default value of genpoly is bchpoly(n,k). For this syntax, n must have the form 2m-1 for some integer m greater than or equal to 3. k must be a valid message length as reported in the second column of params in the command

code = encode(msg,n,k,'hamming/fmt',prim_poly) encodes msg using the Hamming encoding 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 the default primitive polynomial gfprimdf(m).

code = encode(msg,n,k) is the same as code = encode(msg,n,k,'hamming/binary').

[code,added] = encode(...) returns the additional variable added. added is the number of zeros that were placed at the end of the message matrix before encoding, in order for the matrix to have the appropriate shape. "Appropriate" depends on n, k, the shape of msg, and the encoding method.

Examples

The example below illustrates the three different information formats (binary vector, binary matrix, and decimal vector) for Hamming code. The three messages have identical content in different formats; as a result, the three codes that encode creates have identical content in correspondingly different formats.

The output is

The next example creates a cyclic code, adds noise, and then decodes the noisy code. It uses the decode function.

The output is below. Your error rate results might vary because the noise is random.

The next example encodes the same message using Hamming, BCH, and cyclic methods. Before creating BCH code, it uses the bchpoly command to find out what codeword and message lengths are valid. This example also creates Hamming code with the 'linear' option of the encode command. It then decodes each code and recovers the original message.

The output is

Algorithm

Depending on the encoding method, encode relies on such lower-level functions as hammgen, cyclgen, and bchenco.

See Also

decode, bchpoly, cyclpoly, cyclgen, hammgen, bchenco


  dpcmopt eyediagram