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
.
Note:
If your value of |
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