Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrantes:
Rojas López Miguel Ángel
Zamora Pérez Jonathan
Grupo: 8CV1
Especialidad: Comunicaciones
CONTENIDO
1. Objetivo
2. Equipo y material requerido
3. Introducción teórica
4. Desarrollo y resultados
4.1 Generación del diccionario de palabras código de Huffman
4.2 Proceso de codificación de una fuente de información discreta mediante el código
de Huffman
4.3 Proceso de decodificación de una fuente de información discreta codificada
mediante el algoritmo de Huffman
5. Preguntas
6. Conclusiones
7. Bibliografía
1. OBJETIVO
El alumno implementará un codificador y decodificador de Huffman mediante MATLAB para
codificar fuentes de información discretas
2. EQUIPO Y MATERIAL REQUERIDO
➢ Computadora Personal (PC)
➢ Software MATLAB
3. INTRODUCCIÓN TEÓRICA
4. DESARROLLO Y RESULTADOS
4.1.1 Para generar mediante MALTAB, el diccionario de palabras código de Huffman se utiliza la
función “huffmandic”, la cual tiene la siguiente sintaxis:
donde
• dict es una celda de arreglos que contiene los símbolos de la fuente representados por
valores numéricos, así como las palabras código para cada símbolo.
• Pxi es un vector que contiene las probabilidades para símbolo de la fuente de información
• N es un entero que debe estar entre 2 y 10, cuyo valor no debe exceder el número de
símbolos de la fuente. Para el caso de un código binario N = 2.
• varianza indica si se va a utilizar el algoritmo de mínima o máxima varianza, para el caso del
algoritmo de mínima varianza, en este campo debe especificarse ‘min’.
Por ejemplo, suponer que se quiere generar el código de Huffman con MATLAB usando el
algoritmo de mínima varianza para la fuente de información discreta mostrada en la tabla 4.1
end
tempo % imprime la celda de arreglos con el diccionario de Huffman
L % Imprime la longitud promedio de las palabras código
H=-sum(Pxi.*log2(Pxi)); % calcula la entropía de la fuente
efi = H/L % Calcula la eficiencia
red = 1-efi % calcula la redundancia
end
tempo % imprime la celda de arreglos con el diccionario de Huffman
L % Imprime la longitud promedio de las palabras código
H=-sum(Pxi.*log2(Pxi)); % calcula la entropía de la fuente
efi = H/L % Calcula la eficiencia
red = 1-efi % calcula la redundancia
Reportar el código de Huffman obtenido con MATLAB en la tabla 4.1 y en la tabla 4.2 reportar la
longitud promedio de las palabras código obtenidas en cada caso para el algoritmo de mínima
varianza y máxima varianza, así como la eficiencia de codificación y la redundancia. Calcular la
varianza de las palabras código en cada caso.
𝜎𝐿2 𝑀𝐼𝑁 = (2 − 2.2)2(0.40) + (2 − 2.2)2 (0.20) + (2 − 2.2)2(0.20) + (3 − 2.2)2 (0.10) + (3 − 2.2)2(0.10) = 0.16
𝜎𝐿 = √0.16 = 0.4
𝜎𝐿 = √0.16 = 1.16
¿Qué ocurre con la varianza de las palabras código en cada caso? Explicar
Tomando como base a la fuente de información descrita en el punto 4.1.1, suponer que la
fuente de información emite la siguiente secuencia de símbolos
x2, x4, x1, x3, x2, x2, x5, x3, x1, x4, x3, x1
donde
• dict es el diccionario de las palabras código de Huffman las cuales se generan con la
función huffmanenco empleada en el apartado 4.1.1
end
tempo % imprime la celda de arreglos con el diccionario de Huffman
L % Imprime la longitud promedio de las palabras código
H=-sum(Pxi.*log2(Pxi)); % calcula la entropía de la fuente
efi = H/L; % Calcula la eficiencia
red = 1-efi; % calcula la redundancia
sec_sim=[2 4 1 3 2x22
, x54,3 x11, 4x33, 1];
x2, x%Arreglo
2, x5, x3, con
x1, xsecuencia
4, x3, x1 de símbolos
sec_cod = huffmanenco(sec_sim,dict) % genera la secuencia codificada
Tabla 4.3 Secuencia de símbolos emitidos por la fuente y secuencia codificada de símbolos
Símbolo x2 x4 x1 x3 x2 x2 x5 x3 x1 x4 x3 x1
xi
Valor
numérico 2 4 1 3 2 2 5 3 1 4 3 1
Contenido
de 11 011 00 10 11 11 010 10 00 011 10 00
sec_sim
Contenido
de 2 4 1 3 2 2 5 3 1 4 3 1
sec_cod
donde
• dict es el diccionario de las palabras código de Huffman las cuales se generan con la
función huffmanenco empleada en el apartado 4.1.1
Reportar en la tabla 4.4 el contenido de sec_sim donde están los valores numéricos de los
símbolos emitidos por la fuente así como el contenido de sec_decod, si la decodificación es
correcta debe existir correspondencia entre la secuencia de símbolos emitidos y la secuencia
decodificada.
Tabla 4.4 Secuencia de símbolos emitidos por la fuente y secuencia decodificada de símbolos
Símbolo x2 x4 x1 x3 x2 x2 x5 x3 x1 x4 x3 x1
xi
Valor
numérico 2 4 1 3 2 2 5 3 1 4 3 1
Contenido
de 11 011 00 10 11 11 010 10 00 011 10 00
sec_sim
Contenido
de 2 4 1 3 2 2 5 3 1 4 3 1
sec_decod
De acuerdo con los resultados obtenidos ¿Existe correspondencia entre los símbolos emitidos
por la fuente y la secuencia decodificada?
Sí, existe correspondencia entre los símbolos emitidos por la fuente y la secuencia
decodificada. La codificación de Huffman es un algoritmo de codificación de longitud variable
que asigna palabras código más cortas a los símbolos que ocurren con mayor frecuencia. Esto
significa que los símbolos que ocurren con mayor frecuencia en la secuencia original también
ocurrirán con mayor frecuencia en la secuencia codificada.
5. PREGUNTAS
6. CONCLUSIONES
7. BIBLIOGRAFÍA
1.- Haykin, Simon. Sistemas de Comunicación , Limusa, México, 2002, 685 págs.
2.- Sklar, Bernard, Digital Communications Fundamental and Applications,2ª ediciòn, Prentice Hall, USA,
2001 450 págs.
3. John G. Proakis, Digital Communications,. 3rd Edition, Mc Graw-Hill, Inc. International Editions 1995,
928 págs.
4. MATLAB, Manual del usuario