Professional Documents
Culture Documents
n =
q
r
1
q1
,
k = n r =
q
r
1
q1
r.
Se deduce que no existen codigos de Hamming para cualesquiera (n, k) ya
que la construccion depende de r = n k.
7.13. Correccion con un codigo de Hamming
Vamos a ver que no se necesita mantener en memoria la tabla de sn-
dromes, sino solo la matriz de control. Supongamos que se transmite la pa-
labra-codigo x y se recibe y, donde y = x + e, siendo e el error que se ha
producido. Si e es una palabra de peso 1 (porque el codigo de Hamming es
1corrector), se tiene
Hy
t
= H(x
t
+ e
t
) = He
t
,
pues Hx
t
= 0. Si el error e = 0, obviamente He
t
= 0 Hy
t
= 0 y corregimos
aceptando y como correcta. Pero si, como hemos dicho antes, e es de peso
1, entonces e = e
i
( = 0), donde e
i
denota la cadena con todas sus
componentes nulas salvo la que ocupa el lugar iesimo que es igual a ,
entonces He
t
= h
i
, donde h
i
es la columna iesima de H.
Esta observacion permite idear un metodo de correcci on simple .
Al recibir y se calcula Hy
t
.
140
Si Hy
t
= 0, se acepta y como el mensaje enviado.
Si Hy
t
= s
t
= 0 se compara s
t
con las columnas de H. Si existe i, tal que
s
t
= h
i
, entonces e es una cadena de longitud n con en la posicion
i-esima y cero en las otras. Se ha producido un error y corregimos y
como y e.
Si Hy
t
= s
t
no es un m ultiplo de alguna columna de H es que ha habido
m as de un error.
En el caso de codigos binarios de Hamming, a un podemos mejorar este
metodo.
Las columnas de H son vectores de r = nk componentes pertenecientes
a
0, 1
= Z
2
. Las ordenamos de modo que la columna i sea la representaci on
binaria del entero i :
0
2
0
+
1
2
1
+
2
2
2
+ +
t
2
t1
.
Ejemplos 7.13.1. 1. Consideremos la matriz
H =
1 0 1 0 1 0 1
0 1 1 0 0 1 1
0 0 0 1 1 1 1
.
7 = 1 2
0
+ 1 2
1
+ 1 2
2
.
Si, como antes, obtenemos Hy
t
= s
t
, no necesitamos comparar s
t
con
todas las columnas de H. Basta examinar s
t
y ver de que entero i es la
representaci on binaria, y se tratara entonces de la columna i.
2. En el ejemplo anterior, si transmitimos x = 0111100 y recibimos y =
0111110, calculamos Hy
t
= (0 1 1)
t
que es la sexta columna. El error es un
vector de peso 1 (en el sexto lugar). Se decodica y como y (0 0 0 0 0 1 0).
7.14. Codigos de Hamming con MATLAB
Si se desea determinar las matrices de control y generadora para un codigo
de Hamming de redundancia r, se teclea en la ventana de comandos
141
>> [parmat,genmat]=hammgen(r)
y aparecen en pantalla ambas matrices. Por ejemplo, si se toma r = 3; resulta:
>> [parmat,genmat]=hammgen(3)
parmat =
1 0 0 1 0 1 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1
genmat =
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