Documentation |
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