Codificación de Fuente y de Canal Codificación de Fuente y de ...

16
Codificación de Fuente y de Canal Codificación de Fuente y de Canal PRÁCTICA 7 PRÁCTICA 7 ( 2 sesiones) Laboratorio de Señales y Comunicaciones 3 er curso, Ingeniería Técnica de Telecomunicación Javier Ramos López, Fernando Díaz de María, Fernando Pérez Cruz y David Luengo García

Transcript of Codificación de Fuente y de Canal Codificación de Fuente y de ...

Page 1: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Codificación de Fuente y de CanalCodificación de Fuente y de Canal

PRÁCTICA 7PRÁCTICA 7 ( 2 sesiones)

Laboratorio de Señales y Comunicaciones 3er curso, Ingeniería Técnica de Telecomunicación

Javier Ramos López, Fernando Díaz de María, Fernando Pérez Cruz y David Luengo García

Page 2: Codificación de Fuente y de Canal Codificación de Fuente y de ...

1. Objetivos

Los objetivos principales de esta práctica son los siguientes:

• Estudiar la cantidad de información media generada por una fuente discreta o por una fuente continua cuantificada mediante el concepto de entropía.

• Construir códigos de fuente capaces de proporcionar una tasa de salida cercana a la entropía de la fuente: códigos de Huffman.

• Construir códigos de canal capaces de proporcionar una cierta protección frente a errores: códigos de Hamming.

2. Contenido Teórico

A continuación se va a realizar una breve descripción de los elementos que van a ser necesarios para la realización de esta primera práctica: la codificación de fuente (códigos de Huffman), y la codificación de canal (códigos de Hamming). Esta descripción no va a sustituir la información recibida en las asignaturas de Teoría de la Comunicación y Comunicaciones Digitales, y se deberá acudir a las referencias bibliográficas de estas asignaturas para comprender todos los aspectos teóricos que se van a tratar en estas prácticas.

2.1. Codificación de Fuente

La salida que se tiene del codificador está en muchos casos correlada, y algunos bits o cadenas de bits son mucho más probables que otros. Esto provoca que se transmitan más bits de los que son estrictamente necesarios para enviar la información deseada entre el transmisor y el receptor. La cantidad de información por símbolo generada por una fuente viene medida por su entropía. Suponiendo que una fuente discreta es capaz de generar un total de M valores distintos, cada uno de ellos con probabilidad pi, su entropía se define como:

!=

"=M

i

ii ppH1

2log .

La entropía proporciona el límite inferior del número de bits por muestra necesarios para transmitir la información de la fuente sin pérdidas, y es la tasa de salida hacia la que debe tender un buen codificador de fuente. Cuando la tasa de transmisión es mucho mayor que la entropía de la fuente, entonces es posible que algunas de las propiedades

Page 3: Codificación de Fuente y de Canal Codificación de Fuente y de ...

de las modulaciones (por ejemplo su anchura espectral) no sean idénticas a los valores teóricos, lo que puede dar lugar a interferencias con otros sistemas de comunicaciones. La codificación de fuente se encarga de eliminar dicha correlación de tal forma que los bits que aparecen a su salida están incorrelados, y todas las cadenas de cualquier longitud son igualmente probables, obteniéndose un espectro similar al teórico y una cadena de bits a transmitir lo más corta posible.

Una de las formas más habituales de realizar la codificación de fuente es la codificación de Huffman, en la que a cada símbolo o cadena de bits de idéntica longitud se le asigna otra cadena de bits de longitud variable. Cuanto mayor sea la probabilidad de aparición de un símbolo (o cadena de bits) menor será la longitud de la cadena asignada, de tal forma que la longitud media de las cadenas resultantes sea menor que la de las cadenas de bits originales. La ventaja de este tipo de codificadores es que se pueden ilustrar de manera sencilla mediante un ejemplo.

Ejemplo:

Supongamos que se dispone de una fuente continua que discretizamos empleando un cuantificador uniforme con 8 niveles. A continuación codificamos sus salidas, asignán-dole a cada muestra de entrada un símbolo compuesto por tres bits. Las probabilidades de cada uno de estos símbolos son: P(000) =0.2, P(001) =0.01, P(010) =0.4, P(011) =0.04, P(100) =0.1, P(101) =0.02, P(110) =0.07 y P(111) =0.16. En consecuencia, la entropía de esta fuente es

38.2log1

2 =!= "=

M

i

ii ppH ,

que es significativamente inferior a los 3 bits por muestra que estamos empleando si tomamos directamente la salida del codificador. La codificación de Huffman le va asignar a cada cadena de 3 bits una cadena de longitud variable que minimice el número de bits medio por símbolo. Por supuesto, dichas cadenas de bits deben ser unívocamente decodificables. Para asignar estas cadenas se ordenan los símbolos de acuerdo con sus probabilidades: desde el más probable hasta el menos probable. A continuación, se juntan los dos símbolos menos probables, dando lugar a un nuevo símbolo cuya probabilidad es la suma de ambos, y se vuelven a ordenar. Esta operación (parte hacia delante del algoritmo) se repite hasta que se hayan sumado todas las probabilidades, generándose un árbol de símbolos. En la Figura 1 se muestran las probabilidades ordenadas en cada iteración del algoritmo para este ejemplo.

Page 4: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Figura 1: Suma de probabilidades para construir el código de Huffman del ejemplo.

Una vez que el árbol está completamente construido (es decir, en el momento en que todos los símbolos se han juntado en uno solo con probabilidad 1), se recorre el árbol de derecha a izquierda (parte hacia atrás del algoritmo), asociando con cada bifurcación (esto es, donde se han sumado 2 probabilidades) un 0 y un 1 en cada una de sus ramas (se puede hacer de manera arbitraria). En la Figura 2 se muestra dicha asignación, donde siempre se ha situado el 0 en la rama superior.

Figura 2: Asignación de bits a cada bifurcación del árbol del ejemplo.

Por último, se leen los bits de derecha a izquierda hasta llegar al símbolo original, y dicha cadena de bits es la que se le asigna a cada símbolo de entrada. En la Figura 3 se muestra la cadena de longitud variable asignada a cada cadena de tres bits, pudiéndose

Page 5: Codificación de Fuente y de Canal Codificación de Fuente y de ...

apreciar que los símbolos más probables tienen asociadas cadenas más cortas, y los menos probables cadenas asignadas más largas. Este ejemplo es constructivo en el sentido de que cualquier código de Huffman se puede obtener de la misma manera. Además, se puede demostrar que para una asignación no fraccionaria de bits por símbolo dicho código es óptimo. Es decir, se trata del que más se acerca al límite teórico dado por la entropía de la fuente.

Figura 3: Asignación de códigos realizada por el codificador de Huffman.

La calidad de un código de fuente se puede medir por diversos parámetros, de los que en esta práctica únicamente consideraremos dos: la tasa de compresión y la eficiencia. La longitud media de un código se define como la longitud en promedio de una palabra del mismo:

!=

=M

i

iinpL1

,

donde ni es el número de bits usados para codificar el símbolo i-ésimo. Ahora, la tasa de compresión de un código de Huffman se define como la relación de compresión lograda frente a un código de longitud fija utilizado para codificar dicha fuente:

! "L

M2log=# .

Una segunda medida de rendimiento es la eficiencia del código, que mide lo cercana que se encuentra su longitud media del límite teórico dado por la entropía:

( )L

XH=! .

Page 6: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Para un código de Huffman se cumple que 1!" , y 1))(1/()( !!+ "XHXH . Como

ejemplo, el código del apartado anterior es un buen código, ya que su longitud media es 2.44 (recuérdese que su entropía era 2.38), lo que implica una tasa de compresión de 1.23 y una eficiencia del 97.54 % (el límite anterior nos indica que para esta fuente la eficiencia de un código de Huffman debe ser superior al 70.41 %).

Por último, aunque los códigos de Huffman sean óptimos para asignaciones no fraccio-narias de bits, su rendimiento (longitud media del código) puede encontrarse muy lejos de la entropía de la fuente. Esto sucede por ejemplo cuando se dispone de una fuente con probabilidades muy dispares pero muy pocos símbolos para realizar asignaciones de códigos de longitud variable (por ejemplo, una fuente binaria cuyos símbolos tengan probabilidades 0.9 y 0.1). En estos casos, el rendimiento se puede mejorar realizando una extensión del código. La manera más sencilla de hacerlo consiste en suponer que los símbolos consecutivos son independientes, tomar bloques de k símbolos en lugar de tomarlos de uno en uno, y diseñar un código de Huffman para los Mk símbolos resultantes. Se puede demostrar que mejora el rendimiento del código (esto es, que disminuye su longitud media) conforme aumenta el valor de k, tendiendo su longitud media hacia el valor de la entropía (límite teórico) cuando k tiende a infinito. Obviamente, el inconveniente de realizar una extensión del código estriba en que aumenta su complejidad conforme se van utilizando valores mayores de k.

2.2. Codificación de canal

El codificador de canal introduce redundancia controlada de tal forma que si se produce algún error en el canal de comunicaciones se pueda detectar y/o corregir. Hay distintos sistemas de protección contra errores: códigos bloque, códigos convolucionales, códigos de rejilla (“trellis”), etc. En esta práctica nos vamos a centrar en los más sencillos: los códigos bloque lineales. Estos códigos toman los bits de la entrada de k en k, y los transforman en n bits de salida (es decir, añaden r=n-k bits de redundancia). Para llevar a cabo esta transformación se multiplica un vector fila de k bits por una matriz de k×n

elementos binarios, y se realiza la operación de módulo 2 sobre el vector salida de n elementos. Los bits de redundancia son los que van a permitir detectar y corregir los errores que se produzcan en el canal de comunicaciones. En la Figura 4 se muestra de forma esquemática y algebraica el funcionamiento del codificador.

Figura 4: Modelo esquemático y algebraico del codificador de canal.

Page 7: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Es posible detectar la existencia de un error en el canal de comunicaciones con estos códigos gracias a que a la salida del codificador se tiene un espacio vectorial de dimensión n (con 2n posibles vectores por lo tanto), dentro del cual únicamente existen 2k vectores válidos. En consecuencia, 2n – 2k vectores no se pueden dar a no ser que se haya producido al menos un error en el canal de comunicaciones. Para corregir este error (o errores) se procede calculando la distancia Hamming (es decir, el número de bits que son diferentes) entre el vector recibido en el decodificador de canal y los 2k vectores válidos del código, y decidiendo que se ha transmitido aquel cuya distancia de Hamming con el recibido es menor.

Para realizar el proceso de detección se suele emplear una matriz de r×n elementos que

transforma el vector recibido en un cadena de r bits, el síndrome, que identifica unívocamente cada uno de los errores que se han podido producir en el canal de comunicaciones (hasta un cierto número máximo de errores, que depende de la capacidad correctora del código bloque, y que está relacionado con la mínima distancia de Hamming entre dos palabras código). Una vez identificados los bits en que se han producido los errores, puesto que la señal es binaria, se pueden modificar simplemente dichas posiciones para obtener los bits supuestamente transmitidos. En la Figura 5 se muestra de forma esquemática y algebraica el funcionamiento del decodificador.

Figura 5: Modelo esquemático y algebraico del decodificador de canal.

La forma de medir la calidad de estos sistemas de protección contra errores no es única, aunque habitualmente se basan en lo que se conoce como ganancia de codificación. La ganancia de codificación se define como el aumento en la energía media por bit que hay que introducir en la modulación posterior sin codificación de canal para obtener la misma probabilidad de error que se obtiene con esta codificación. El problema para medir esta ganancia radica en cómo se debe calcular la probabilidad de error cuando se introduce el codificador de canal: manteniendo la tasa de transmisión o aumentándola.

Page 8: Codificación de Fuente y de Canal Codificación de Fuente y de ...

En el primer caso el tiempo de bit en la modulación posterior no varía (es decir, se mantiene la tasa binaria), de modo que la introducción del código bloque va a suponer una gran ganancia sobre el sistema sin codificar: la probabilidad de error de bit (BER) del modulador sin codificar no cambia, y el código bloque va a ser capaz de corregir algunos errores. Sin embargo, en este caso estaremos transmitiendo a una tasa k/n veces menor que en el sistema original, puesto que por cada n bits que transmitimos únicamente k son de información (los restantes son bits de redundancia). En consecuencia, esta comparación puede parecer injusta.

La segunda posibilidad consiste en mantener la amplitud de la modulación constante y disminuir el tiempo de bit multiplicándolo por k/n (es decir, se aumenta la tasa binaria), de tal forma que la tasa a la que se envían los bits de información permanece inalterada. En este caso, al haber reducido la energía por bit, la probabilidad de error del modulador sin codificar va aumentar, y el código tendrá que compensar además este aumento en la tasa de error sobre el sistema original. Esta medida (que puede parecer más justa) a igualdad de potencia transmitida por bit de mensaje y de tasa de bits por segundo, presenta el inconveniente de aumentar el ancho de banda ocupado. Este efecto provoca que la comparación sea nuevamente injusta, y en muchas aplicaciones limita su utilidad porque el ancho de banda disponible puede ser fijo en algunas aplicaciones. El uso de ambas medidas está ampliamente aceptado, siempre y cuando se especifique claramente cual se está empleando.

2.3. Canal de comunicaciones

En este último bloque lo único que se va a hacer es sumar ruido Gaussiano y blanco (AWGN) a la señal de salida del transmisor. En esta práctica nos vamos a centrar en un canal genérico que únicamente añade ruido a la señal transmitida. El canal va a estar caracterizado por una densidad espectral de potencia No/2, aunque de momento vamos a trabajar simplemente con un canal discreto equivalente. Este canal es un artefacto matemático (no existe en la realidad) que sustituyes los bloques del modulador, canal y demodulador por un canal (discreto equivalente) que lo único que hace es cambiar de valor algunos bits a la salida del codificador de canal con una cierta probabilidad de error prefijada. En la Figura 6 se muestra su funcionamiento de forma esquemática. El canal discreto equivalente es muy empleado cuando se quiere diseñar un sistema genérico que no dependa del canal de comunicaciones empleado, dejando su complejidad al diseño del modulador/demodulador. Además permite trabajar siempre con bits (símbolos) en lugar de con señales.

Page 9: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Figura 6: Modelo de Canal Discreto Equivalente.

Page 10: Codificación de Fuente y de Canal Codificación de Fuente y de ...

3. Cuestionario previo

3.1. Calcule la entropía de las siguientes fuentes discretas:

a) Fuente binaria con probabilidades 0.9 y 0.1.

b) Fuente con tres símbolos cuyas probabilidades son 0.73, 0.25 y 0.02.

c) Fuente que puede emitir 6 símbolos con probabilidades 0.4, 0.2, 0.1, 0.1, 0.1 y 0.1.

3.2. Obtenga un código de Huffman para cada una de las fuentes de la cuestión 3.1. Compruebe si se trata de buenos códigos o no, calculando en cada caso su tasa de compresión y su eficiencia.

3.3. Calcule las probabilidades de los símbolos resultantes de realizar una extensión del código para la primera fuente de la cuestión 3.1 con k = 2 y k = 3. Halle la entropía por conjunto de k símbolos y por símbolo en cada caso. ¿Qué conclu-siones obtiene respecto al comportamiento de la entropía con k?

3.4. Obtenga un código de Huffman para los códigos extendidos de la cuestión 3.3, y compruebe que mejora el rendimiento del código calculando su tasa de compre-sión y su eficiencia en cada caso.

3.5. Se dispone de una fuente continua que se cuantifica usando un cuantificador del tipo “mid-riser” con rango dinámico entre -1 y 1. Calcule la entropía de la fuente discreta resultante (en función del número de niveles del cuantificador) en los casos siguientes:

a) La amplitud de la fuente analógica sigue una FDP uniforme entre -1 y 1.

b) La amplitud de la fuente analógica sigue una FDP Gaussiana con media cero y varianza σ2.

3.6. Desarrolle sobre el papel las funciones entropia, extension y encod, de los ejercicios 4.1, 4.5 y 5.1 respectivamente.

3.7. Rellene las tablas de los ejercicios 5.1 y 5.5 en las que se relaciona el síndrome obtenido con cada uno de los posibles vectores de error.

Page 11: Codificación de Fuente y de Canal Codificación de Fuente y de ...

4. Codificación de fuente

Ejercicio 4.1. Desarrolle una función que calcule la entropía de una fuente discreta. Esta función, h = entropia(p), recibirá como entrada un vector p de dimensiones N × 1 o

1 × N con la probabilidad de ocurrencia de cada símbolo de la fuente, comprobará que

se trata efectivamente de un vector de probabilidades válido (devolviendo un mensaje de error mediante la función error de Matlab en caso contrario), y devolverá su entropía, h. Evalúe su rendimiento obteniendo la entropía de las tres fuentes de la cuestión 3.1 y comprobando que coincide con el resultado teórico.

Ejercicio 4.2. Genere 2500 muestras de una señal con una FDP uniforme entre -1 y 1 de su amplitud, y cuantifíquela usando un cuantificador del tipo “mid-riser” con un número de niveles entre 1 y 8. Calcule su entropía en cada caso, rellene la columna correspondiente de la Tabla 1, y compárela con el resultado teórico de la cuestión 3.3. Repita el procedimiento para una señal cuya amplitud sigue una FDP Gaussiana con media cero y varianza unidad, rellenando la segunda columna de la Tabla 1, y comparando los valores obtenidos con el resultado teórico. ¿Aparece alguna diferencia entre la entropía teórica y la calculada mediante simulación en ambos casos? En caso afirmativo, ¿a qué cree que es debido? ¿Cómo varía la entropía al aumentar el número de niveles de cuantificación en ambos casos?

Bits Uniforme Gaussiana

1

2

3

4

5

6

Tabla 1: Entropía para diferentes señales y número de bits.

Nota: Para este ejercicio necesitará la función q_midriser desarrollada en la práctica anterior. Además, para evaluar la entropía de manera práctica deberá obtener previa-mente la probabilidad de cada símbolo mediante un histograma, como se vio en la práctica 6. Para ello resulta conveniente utilizar la función histc en este caso en lugar de hist, ya que permite fijar los límites de los intervalos.

Page 12: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Ejercicio 4.3. La función [H,l] = huffman(p) devuelve un código de Huffman para una fuente discreta con un vector de probabilidades p. La matriz H contiene el código asociado a cada símbolo en sus filas, mientras que l es un escalar con la longitud media del código. Compruebe su correcto funcionamiento observando los códigos generados para cada una de las fuentes de la cuestión 3.1, obteniendo su tasa de compresión y su eficiencia y comprobando que coinciden con los valores calculados en la cuestión 3.2.

Ejercicio 4.4. Utilice la función huffman para obtener un código de Huffman para las señales continuas cuantificadas del ejercicio 4.2 (ambas, la de FDP uniforme y la de FDP Gaussiana), y rellene la tabla siguiente.

Uniforme Gaussiana

Bits Tasa de compresión

Eficiencia Tasa de compresión

Eficiencia

1

2

3

4

5

6

Tabla 2: Tasa de compresión y eficiencia del código de Huffman para diferentes señales continuas (FDP uniforme y Gaussiana) y número de bits.

Ejercicio 4.5. Codifique la función px = extension(p,k), que obtiene el vector de probabilidades, px, para una fuente discreta cuyos símbolos siguen el vector de probabi-lidades p, cuando se toman símbolos de k en k (esto es, se ha realizado una extensión del código de orden k). Asuma que los símbolos son independientes. Utilice la función para obtener una extensión de la primera fuente de la cuestión 3.1 con k=1,...,6. Calcule la entropía de los alfabetos extendidos y obtenga un código de Huffman para cada uno de ellos. Compruebe que la entropía, la tasa de compresión y la eficiencia coinciden con los teóricos (calculados en las cuestiones 3.3 y 3.4) cuando sea posible (esto es, para k = 1, 2 y 3). Dibuje la longitud media por símbolo del alfabeto original frente a k, y compruebe cómo desciende uniformemente hacia el límite teórico dado por la entropía de la fuente original.

Page 13: Codificación de Fuente y de Canal Codificación de Fuente y de ...

5. Codificación de Canal

Ejercicio 5.1. Desarrolle una función que decodifique una secuencia de bits con un código de Hamming (n = 15 y k = 11), m = decod(s,r). Para ello se dispone de la función c = encod(m) que realiza la codificación con la matriz generadora,

[ ]PIG =

!!!!!!!!!!!!!!!!

"

#

$$$$$$$$$$$$$$$$

%

&

=

111110000000000

011101000000000

101100100000000

001100010000000

110100001000000

010100000100000

100100000010000

111000000001000

011000000000100

101000000000010

110000000000001

,

cuya primera parte es una matriz identidad, de modo que los 11 primeros bits de c son los de m (este es un ejemplo de un código sistemático), y de una función que calcula los bits de síndrome s, s = sindrom(c), mediante la matriz H mostrada a continuación.

s E

0000 000000000000000

0001 ...

... ...

1111 ...

[ ]IPHT=

!!!!

"

#

$$$$

%

&

=

100010101011011

010011001101101

001011110001110

000111111110000

Para realizar la decodificación va a necesitar obtener el error asociado a cada síndrome. Por lo tanto, se le pide que rellene de forma previa a la práctica la Tabla 3. Compruebe que cada síndrome distinto del vector nulo se corresponde con una de las columnas de H, y que la posición de la columna indica el bit erróneo. Esta información va a resultar imprescindible para realizar la función de decodificación.

Nota: Para llevar a cabo el decodificador se recomienda el uso de las funciones ser2par2 y par2ser2, que son variantes de las ya empleadas en la sesión anterior.

Page 14: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Síndrome Vector de error

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

Tabla 3: Síndrome y vector de error asociado para el código de Hamming (15,11).

Ejercicio 5.2. Genere una secuencia de 11000 bits aleatorios y equiprobables. Dese cuenta de que esto lo puede hacer con la función chan_bin de la sesión anterior (indique cómo). Codifique dichos bits con el codificador de canal e introdúzcalos en el canal discreto equivalente implementado por chan_bin con Pe = 0.0003, 0.001, 0.003, 0.01, 0.03, 0.1 y 0.3 (promedie para 10 realizaciones). Calcule la probabilidad de error de bit entre la entrada y la salida de chan_bin? Introduzca la salida de chan_bin en el decodificador de canal y compruebe la probabilidad de error de bit a la salida. Obtenga la razón entre el número de errores a la salida de decod y a su entrada. ¿Qué ocurre cuando crece Pe?¿Qué significa esto?

Page 15: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Ejercicio 5.3. En el ejercicio anterior se pudo comprobar que al emplear la codificación de canal los errores producidos por el canal se reducían de forma muy significativa. En este ejercicio se va a explorar un método alternativo de medir la calidad del sistema codificado y sin codificar. Suponga que la probabilidad de error del canal de

comunicaciones es ( )0

2 NEQPe b= , y que para mantener la tasa de bits de información

por segundo se ha reducido el tiempo de bit, de modo que la probabilidad de error se

incrementa en el canal a ( )nkNEQPe b 02= . Genere 110000 bits aleatorios, codifí-

quelos con encod, y páselos por un canal discreto equivalente para diversos valores de

0NE

bentre 1 y 8 (utilice un paso de 0.5) usando la probabilidad de error dada por la

segunda fórmula. Decodifique los bits obtenidos a la salida del canal y calcule la probabilidad de error (promedie para 10 realizaciones). Represente gráficamente, empleando la función semilogy, la probabilidad de error a la salida del decodificador en función de

0NE

b (en dBs) y dibuje sobre ésta la probabilidad de error del sistema sin

codificar, empleando la primera fórmula de probabilidad de error.

Ejercicio 5.4. La ganancia de codificación se define como el valor M por el que hay que multiplicar

0NE

b para que las probabilidades de error del sistema sin codificación y

con codificación de canal produzcan la misma BER. Calcule dicha ganancia para los resultados de los ejercicios 5.2 y 5.3. ¿Cómo se comporta la ganancia de codificación en cada caso? ¿Existen diferencias apreciables entre ambos métodos de medida? En caso afirmativo, ¿a qué cree que son debidas?

Ejercicio 5.5. Repita los Ejercicios 5.1 a 5.4 para un código Hamming con n = 7 y k = 4, cuyas matrices G y H se muestran a continuación. Para ello tendrá que modificar las funciones encod y sindrome para ajustarlas a este código (desarrolle dos nuevas funciones encod2 y sindrome2), y rellenar la Tabla 4 (página siguiente) con los vectores de error asociados a cada síndrome en este caso.

!!!!

"

#

$$$$

%

&

=

1111000

0110100

1010010

1100001

G !!!

"

#

$$$

%

&

=

1001011

0101101

0011110

H

Page 16: Codificación de Fuente y de Canal Codificación de Fuente y de ...

Síndrome Vector de error

000

001

010

011

100

101

110

111

Tabla 4: Síndrome y vector de error asociado para el código de Hamming (7,4).