galois.poly_to_generator_matrix

galois.poly_to_generator_matrix(n, generator_poly, systematic=True)

Converts the generator polynomial \(g(x)\) into the generator matrix \(\mathbf{G}\) for an \([n, k]\) cyclic code.

Parameters
  • n (int) – The codeword size \(n\).

  • generator_poly (galois.Poly) – The generator polynomial \(g(x)\).

  • systematic (bool, optional) – Optionally specify if the encoding should be systematic, meaning the codeword is the message with parity appended. The default is True.

Returns

The \((k, n)\) generator matrix \(\mathbf{G}\), such that given a message \(\mathbf{m}\), a codeword is defined by \(\mathbf{c} = \mathbf{m}\mathbf{G}\).

Return type

galois.FieldArray

Examples

Compute the generator matrix for the \(\mathrm{Hamming}(7, 4)\) code.

In [1]: g = galois.primitive_poly(2, 3); g
Out[1]: Poly(x^3 + x + 1, GF(2))

In [2]: galois.poly_to_generator_matrix(7, g, systematic=False)
Out[2]: 
GF([[1, 0, 1, 1, 0, 0, 0],
    [0, 1, 0, 1, 1, 0, 0],
    [0, 0, 1, 0, 1, 1, 0],
    [0, 0, 0, 1, 0, 1, 1]], order=2)

In [3]: galois.poly_to_generator_matrix(7, g, systematic=True)
Out[3]: 
GF([[1, 0, 0, 0, 1, 0, 1],
    [0, 1, 0, 0, 1, 1, 1],
    [0, 0, 1, 0, 1, 1, 0],
    [0, 0, 0, 1, 0, 1, 1]], order=2)