Main Content

# bchgenpoly

Generator polynomial of BCH code

## Syntax

```genpoly = bchgenpoly(n,k) genpoly = bchgenpoly(n,k,prim_poly) genpoly = bchgenpoly(n,k,prim_poly,outputFormat) [genpoly,t] = bchgenpoly(...) ```

## Description

`genpoly = bchgenpoly(n,k)` returns the narrow-sense generator polynomial of a BCH code with codeword length `n` and message length `k`. The codeword length `n` must have the form 2m-1 for some integer m between 3 and 16. The output `genpoly` is a Galois row vector that represents the coefficients of the generator polynomial in order of descending powers. The narrow-sense generator polynomial is LCM[m_1(x), m_2(x), ..., m_2t(x)], where:

• LCM represents the least common multiple,

• m_i(x) represents the minimum polynomial corresponding to αi, α is a root of the default primitive polynomial for the field GF(`n+1`),

• and t represents the error-correcting capability of the code.

Note

Although the `bchgenpoly` function performs intermediate computations in GF(`n+1`), the final polynomial has binary coefficients. The output from `bchgenpoly` is a Galois vector in GF(2) rather than in GF(`n+1`).

`genpoly = bchgenpoly(n,k,prim_poly)` is the same as the syntax above, except that `prim_poly` specifies the primitive polynomial for GF(`n+1`) that has Alpha as a root. `prim_poly` is either a polynomial character vector or an integer whose binary representation indicates the coefficients of the primitive polynomial in order of descending powers. To use the default primitive polynomial for GF(`n+1`), set `prim_poly` to `[]`.

`genpoly = bchgenpoly(n,k,prim_poly,outputFormat)` is the same as the previous syntax, except that `outputFormat` specifies output data type. The value of `outputFormat` can be ‘`gf`' or '`double`' corresponding to Galois field and double data types respectively. The default value of `outputFormat` is '`gf`'.

`[genpoly,t] = bchgenpoly(...)` returns `t`, the error-correction capability of the code.

## Examples

collapse all

Create two BCH generator polynomials based on different primitive polynomials.

Set the codeword and message lengths, `n` and `k`.

```n = 15; k = 11;```

Create the generator polynomial and return the error correction capability, `t`.

`[genpoly,t] = bchgenpoly(15,11)`
``` genpoly = GF(2) array. Array elements = 1 0 0 1 1 ```
```t = 1 ```

Create a generator polynomial for a (15,11) BCH code using a different primitive polynomial expressed as a character vector. Note that `genpoly2` differs from `genpoly`, which uses the default primitive.

`genpoly2 = bchgenpoly(15,11,'D^4 + D^3 + 1')`
``` genpoly2 = GF(2) array. Array elements = 1 1 0 0 1 ```

## Limitations

The maximum allowable value of `n` is 65535.

## References

[1] Peterson, W. Wesley, and E. J. Weldon, Jr., Error-Correcting Codes, 2nd ed., Cambridge, MA, MIT Press, 1972.

## See Also

### Topics

Introduced before R2006a

## Support

#### Bridging Wireless Communications Design and Testing with MATLAB

Download white paper