Reed-Muller codes

Reed-Muller shall be abbreviated RM.

The $ [8, 4, 4]$ RM code over $ GF(2)$ having generator matrix

\begin{displaymath}
\left(
\begin{array}{cccccccc}
1& 0& 0& 1& 0& 1& 1& 0\\
0& ...
... 1& 1& 0& 0& 1& 1\\
0& 0& 0& 0& 1& 1& 1& 1
\end{array}\right)
\end{displaymath}

is obtained by typing

C:=ReedMullerCode(1,3);
G:=GeneratorMat(C);
(Use Display(G); to see G if necessary.) Encoding a message $ w$ using $ G$, is simply the map $ w\longmapsto wG$. Type
Elements(C);
Size(Elements(C));

From this, you see all the codewords of C and how many there are.

To get the parity check matrix, type

H:=CheckMat(C);

To see if a vector in $ \mathbb{F}^8$ is a codeword, simply compute $ Hv$ and check if it is zero or not. Here's a GAP example:

v:=Codeword([1,0,0,0,0,0,0,0]);
v in C;

Since this last vector is non-zero, $ v$ is not a codeword. If it was a vector received in transmission (with at least one error) then to decode it, hence to find the most likely codeword sent, type

Decode(C,v);

Exercise 3.14.4 (a)   For the parity check matrix $ H$ of the RM code of length $ 8$, verify $ Hc=0$ for three or four codewords c. Decode $ (1,1,0,0,0,0,0,0)$.

(b) Find a parity check matrix of the RM code of length $ 16$. Verify $ Hc=0$ for three or four codewords $ c$. Decode $ (1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0)$.

To get the dimension of the code, type Dimension(C); To get its minimum distance, type MinimumDistance(C);

Exercise 3.14.5   Find the dimension and minimum distance of the RM code of length $ 16$.



David Joyner 2007-09-03