Codificacion Huffman

7
Fundación Universitaria Panamericana - Ingeniería de Sistemas - Teoría de la Información y las Telecomunicaciones Docente: Ing. Guillermo Alvarado R. Taller 3: Codificación Binaria

description

Codificacion huffman

Transcript of Codificacion Huffman

Fundacin Universitaria Panamericana - Ingeniera de Sistemas - Teora de la Informacin y las TelecomunicacionesDocente: Ing. Guillermo Alvarado R.Taller 3: Codificacin Binaria

Codigos de Huffman en MatlabCrear un Diccionario de Cdigos Huffman en MATLAB

La codificacin de Huffman requiere informacin estadstica acerca de la fuente de los datos que estn siendo codificados. En particular, el argumento de entrada p en la funcin - huffmandict - enumera la probabilidad con la que la fuente produce cada smbolo en su alfabeto.

Por ejemplo, considere una fuente de datos que produce S1 con probabilidad 0,1, S2 con probabilidad 0,1 y S3 con una probabilidad de 0,8. El paso computacional principal en la codificacin de los datos de esta fuente utilizando un cdigo de Huffman es crear un diccionario que asocia cada smbolo de datos con una palabra de cdigo. Los comandos siguientes crean tal diccionario y luego muestran el vector de palabra-cdigo asociado con un determinado valor de la fuente de datos.

symbols = [1 2 3]; % Son los smbolos que produce la fuentep = [0.1 0.1 0.8]; % Probability of each data symboldict = huffmandict(symbols,p) % Create the dictionary. dict es un vector creadodict{1,:} % Show one row of the dictionary.

La salida muestra que el smbolo de datos ms probable, 3, est asociada con una palabra de cdigo de un dgito, mientras que los smbolos de datos menos probables estn asociadas con palabras de cdigo de dos dgitos. La salida tambin muestra, por ejemplo, que un codificador de Huffman recibiendo el smbolo de datos 1 debe sustituir la secuencia 11.

dict =

[1] [doble 1x2] [2] [doble 1x2] [3] [0]

ans =

1

ans =

1 1

Crear y decodificar un Cdigo Huffman en MATLAB

El ejemplo siguiente realiza la codificacin y decodificacin Huffman, usando una fuente cuyo alfabeto tiene tres smbolos. Observe que las funciones huffmanenco - y huffmandeco - utilizan el diccionario que huffmandict ha creado.

sig = repmat([3 3 1 3 3 3 3 3 2 3],1,50); % Data to encode, sig es un vector matriz que repite los simbolos que aparecen en 1 fila 50 vecessymbols = [1 2 3]; % Distinct data symbols appearing in sig, son los simbolos de la fuentep = [0.1 0.1 0.8]; % Probability of each data symboldict = huffmandict(symbols,p); % Create the dictionary.hcode = huffmanenco(sig,dict); % Encode the data.dhsig = huffmandeco(hcode,dict); % Decode the code.

sig es un vector de datos con 1 columna y 50 filas resultado de la repeticin de los datos entre parntesis. Symbols es la instruccin que contiene la cantidad de smbolos a codificar de acuerdo a un alfabeto finito, para el caso del ejemplo son solo 3 smbolos y sus probabilidades p se encuentran distribuidos en otro vector. Huffmandict crea el diccionario para encontrar el valor binario de cada smbolo; hufmanenco realiza la codificacin del vector resultante y huffmandeco la decodificacin para los smbolos de acuerdo al diccionario.

Ejercicios:Realice en matlab los diccionarios de huffman, muestre la grfica de smbolos contra probabilidad y encuentre la codificacin de los datos en los siguientes casos:1- para la fuente A con 4 smbolos [1 2 3 4] y probabilidades asociadas [0.6 0.2 0.1 0.1], se muestren por pantalla los smbolos y cdigos asociados (en matlab a travs de huffmandict- )2-Calcule analticamente la entropa, el cdigo Huffman y la longitud media del cdigo para la fuente A 3- Si el cdigo {0, 10,110,111} tambin es un cdigo Huffman vlido para la fuente A, analice el por qu se pueden generar diferentes cdigos para la misma fuente4- Para la fuente B con 4 smbolos [1 2 3 4] y probabilidades asociadas [0.5 0.3 0.15 0.05] repita los pasos del ejercicio 15- Calcule la entropa, y el cdigo huffman para la fuente B6- Encuentre el diccionario /codificacin huffman para la fuente C con 8 smbolos [1 2 3 4 5 6 7 8] y probabilidades asociadas [0.3 0.15 0.25 0.2 0.05 0.025 0.015 0.01]7- Tambin calcule analticamente la entropa, el cdigo Huffman y la longitud media del cdigo para la fuente C.