## Documentation Center |

Produce parity-check and generator matrices for Hamming code

`h = hammgen(m)h = hammgen(m,pol)[h,g] = hammgen(...)[h,g,n,k] = hammgen(...)`

For all syntaxes, the codeword length is `n`. `n` has
the form 2^{m}-1 for some positive integer
m greater than or equal to 3. The message length, `k`,
has the form `n`-m.

`h = hammgen(m)` produces
an `m`-by-n parity-check matrix for a Hamming code
having codeword length `n = 2^m-1`.
The input `m` is a positive integer greater than
or equal to 3. The message length of the code is n-`m`.
The binary primitive polynomial used to produce the Hamming code is
the default primitive polynomial for GF(`2^m`), represented
by `gfprimdf``(m)`.

`h = hammgen(m,pol)` produces
an `m`-by-n parity-check matrix for a Hamming code
having codeword length `n = 2^m-1`.
The input `m` is a positive integer greater than
or equal to 3. The message length of the code is n-`m`. `pol` is
a row vector that gives the coefficients, in order of ascending powers,
of the binary primitive polynomial for GF(`2^m`)
that is used to produce the Hamming code. `hammgen` produces
an error if `pol` represents a polynomial that is
not, in fact, primitive.

`[h,g] = hammgen(...)` is
the same as `h = hammgen(...)` except that it also
produces the `k`-by-n generator matrix `g` that
corresponds to the parity-check matrix `h`. `k`,
the message length, equals n`-m`, or `2^m-1-m`.

`[h,g,n,k] = hammgen(...)` is
the same as `[h,g] = hammgen(...)` except that it
also returns the codeword length `n` and the message
length `k`.

The command below exhibits the parity-check and generator matrices
for a Hamming code with codeword length 7 = 2^{3}-1
and message length 4 = 7-3.

[h,g,n,k] = hammgen(3) h = 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 g = 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 n = 7 k = 4

The command below, which uses 1 + x^{2} + x^{3} as the
primitive polynomial for GF(2^{3}), shows
that the parity-check matrix depends on the choice of primitive polynomial.
Notice that `h1` below is different from `h` in
the example above.

h1 = hammgen(3,[1 0 1 1]) h1 = 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1

Was this topic helpful?