galois.poly_to_generator_matrix

galois.poly_to_generator_matrix(n: int, generator_poly: Poly, systematic: bool = True) FieldArray

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

Parameters
n

The codeword size \(n\).

generator_poly

The generator polynomial \(g(x)\).

systematic

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}\).

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)

Last update: May 18, 2022