Mart´ın Nobl´ıa

Comunicaci´
on de Datos
Laboratorio Nº1

Profesor:

Ing. Fabi´
an Iakinchuk

Ayudante: Sr. Mart´ın Castillo

1857 – November 3. Liapunov or Ljapunow.To Lyapunov1 1 (June 6. His surname is sometimes romanized as Ljapunov. as well as for his many contributions to mathematical physics and probability theory. 1918) was a Russian mathematician. . Lyapunov is known for his development of the stability theory of a dynamical system. mechanician and physicist.

length(x)/length(s)). fprintf('La entropa de la fuente es : %f\n'.*log2(1. b) Calcular la entrop´ıa de la fuente. Visual Basic o en Matlab de manera tal que calcule la probabilidad de ocurrencia de cada s´ımbolo existente en la fuente.'r+'). %Resto el caracter de fin de linea letras(j)=ascii(j).sum(H(:))). H=prob.%ascii normal ascii=horzcat(ascii1.ascii2). end y(j)=length(x)/(length(s)−1). Visual C. prob=nonzeros(y). fid=fopen(x1.%ascii extendido ascii2 = char(32:127). for j = 1:length(ascii) x=find(s==ascii(j))./prob).9f \n'.9f\n'.1 Resoluci´ on El siguiente script de Octave-Matlab—implementa la soluci´on: tic clear all clc disp('Programa que calcula la probabilidad de ocurrencia de cada simblo de una fuente de informacion'). fclose(fid). x=zeros(length(s)).sum(y(:))). %Calculo de la entropia H(s) letras2=nonzeros(letras). letras=zeros(length(ascii)). fprintf('la probabilidad de :%c −−>%. x1= input('ingres el path de tu archivo de texto:'). H=zeros(length(s)). 1.%concateno los dos %Prealocamos para mayor velocidad y=zeros(length(ascii)). Universidad Nacional de Quilmes 2 1º cuatrimestre 2013 . tline = fgets(fid). if(isempty(x)) continue.ascii(j). end fprintf('La suma de las probas es :%. ascii1 = char((32:127)+128). Mostrar en un listado (sea en pantalla o en otro archivo *.Comunicaci´on de Datos 1 Mart´ın Nobl´ıa Ejercicio Nº 1 Dada una fuente de datos en un archivo de texto nombrado “texto. s = char(tline).txt) cada elemento de la fuente con su probabilidad calculada asociada.txt” : a) Escribir un algoritmo en lenguaje C.

034782609 la probabilidad de :l -->0. 2.017391304 La suma de las probas es :1.043478261 la probabilidad de :r -->0. (Dicha codificaci´on puede ser mostrada en pantalla o en un archivo de salida *.052173913 la probabilidad de :m -->0.017391304 la probabilidad de :d -->0.008695652 la probabilidad de :h -->0. 2 Ejercicio Nº2 Dado un archivo de texto nombrado “texto2. d) Verifique si el c´ odigo generado es ´ optimo. c) Calcular en forma manual o con el mismo software la eficiencia de la compresi´on.008695652 la probabilidad de :E -->0.017391304 la probabilidad de :n -->0.000000000 La entropa de la fuente es : 3.017391304 la probabilidad de :w -->0.026086957 la probabilidad de :e -->0.552871 seconds.026086957 la probabilidad de :p -->0.Comunicaci´on de Datos toc Mart´ın Nobl´ıa %Tiempo de ejecucion Cuya salida fue: Programa que calcula la probabilidad de ocurrencia de cada simblo de una fuente de informacion ingres el path de tu archivo de texto:’/home/elsuizo/Escritorio/texto.989736 Elapsed time is 27.034782609 la probabilidad de :t -->0.121739130 la probabilidad de :c -->0.017391304 la probabilidad de :u -->0. Visual Basic o en Matlab que codifique cada elemento de la fuente usando codificaci´on Huffman.txt” el cual posee una longitud fija de 30 caracteres ASCII: a) Escribir un algoritmo en lenguaje C.026086957 la probabilidad de :i -->0.113043478 la probabilidad de :f -->0.043478261 la probabilidad de :o -->0.1 Resoluci´ on La implementaci´on de la soluci´on es la siguiente: Universidad Nacional de Quilmes 3 1º cuatrimestre 2013 .191304348 la probabilidad de :.txt) b) El software creado debe calcular la entrop´ıa y la longitud media del c´ odigo generado.008695652 la probabilidad de :a -->0.txt’ la probabilidad de :´ a -->0. -->0.034782609 la probabilidad de : -->0.069565217 la probabilidad de :v -->0.043478261 la probabilidad de :s -->0. Visual C.017391304 la probabilidad de :q -->0.

while ¬check %mientras sea true if A(r)<32 %me fijo si A(r) es menor que 32 (ASCII del espacio) r=r+1. %fix para cantidad de caracteres leidos menos los caracteres de control elementos(1)=struct('simbolo'.−1. elementos1=struct('simbolo'.:)=ordenar(m(i.ref.code6=−1 %si encuentro el simbolo representado por el ascii en %elementos(i).−1.simbolo)) && m(j. j=1. %primera fila for i=1:length(elementos) for j=1:(length(m)−1) for k=1:length(m)−j %las ultimas j columnas son de relleno para ajuste de dimensiones %y no otro tipo de utilidad if any(find(elementos(i).0). %multiplico por el total.ref. %entropia resultado=cell(length(elementos)+1. aumento en una posicion para seguir buscando uno que no lo sea else ref=A(r). [m(i. %si es menor a 32. %si es ≥32 entonces lo tomo como referencia check=true.m).:)={'Simbolos'.k).m). %creo una celda para mostrar los datos al final resultado(1. %algoritmo de filtrado de caracteres de control (tab.:)]=pseudotree(m(i. A=sort(A).:).Comunicaci´on de Datos Mart´ın Nobl´ıa function Huffman(id texto) tic clc textoid=fopen(id texto).'esSuma'.'code'. %ver funcion pseudotree i=1.ref.'code'. %mientras el elemento m(i. etc) check=false. %y digo "ya encontre el primer caracter ≥32" end end %y repite hasta encontrar if length(A(r:end))>30 error('El texto posee mas de 30 caracteres ASCII').'code'.prob6=1 m(i.−1. %cambio de referencia de comparacion j=j+1.0).1).m(i+1. elementos=elementos1.simbolo==m(j.3). [elementos.−1. se ordena m %y se llama a pseudotree (ver funcion) while m(i. fclose(textoid).:).1) tenga probabilidad distinta de 1.'Probabilidad'. end count=count−r+1 .'%c').0).'code'. elementos1(j)=struct('simbolo'.length(elementos))=struct('simbolo'.k).simbolo y este tiene codigo %asignado distinto de −1 entonces Universidad Nacional de Quilmes 4 1º cuatrimestre 2013 .'esSuma'.count]=fscanf(textoid.0).'prob'. end L=0.'esSuma'.1/count.prob=((elementos(j). i=i+1.simbolo en m(j.'prob'.'prob'. 1/count. salto de linea. %se abre el archivo y se le asigna un id [A. %parche pseudo−prealloc %sumo un elemento y divido por el total para calcular la probabilidad else ref=A(i).'Codigo'}. 1/count. %se ordena elementos para probabilidades de forma creciente m(length(elementos)−1. r=1.prob*count)+1)/count. %longitud media de codigo H=0.m(1. %agrego estructura %para nuevo simbolo y su respectiva probabilidad elementos=elementos1. for i=(r+1):length(A) if A(i)==ref elementos1(j).'prob'.'esSuma'. %parche pseudo−prealloc end end elementos=ordenar(elementos).−1. A=double(A).:)]=pseudotree(elementos.k).:)).−1.

%invierto el codigo para que sea el correcto L=L+elementos(i). concateno con m(j.prob)..0345] ’1 1 1 ’d’ [ 0.k).prob*−log2(elementos(i).Comunicaci´on de Datos Mart´ın Nobl´ıa if elementos(i). c++ y visual Basic.num2str(elementos(i).0690] ’1 0 1 ’o’ [ 0.1034] ’0 1 0’ ’e’ [ 0.code no tenia asignado un valor binario elementos(i).code).code=[elementos(i).0345] ’1 1 0 ’h’ [ 0.code). L) fprintf('Eficiencia de codigo n = %f \n'.693345 Longitud media de codigo es L = 3.1034] ’1 1 1 ’a’ [ 0.El Programa debe cumplir las siguientes caracter´ısticas y puede ser elaborado en un .2069] ’0 0’ 0 0 1 1 1 1 0 0 0 0 0’ 1’ 1’ 0’ 1’ 0’ 1’ 0’ 1’ 0’ 1’ 0’ 1’ Entropia H = 3. H/L*100) toc end Cuya salida es la siguiente: Elementos y su respectiva codificacion ’Simbolos’ ’Probabilidad’ ’Codigo’ ’N’ [ 0.M de matlab aprovechando las librer´ıas que posee el software o puede ser implementando en lenguaje c.109090 seconds.code)}.code=fliplr(elementos(i). %datos para mostrar end disp('Elementos y su respectiva codificacion') disp(resultado) fprintf('Entropia H = %f \n'.code].724138 Eficiencia de codigo n = 99.0345] ’1 1 1 ’b’ [ 0.code %esta asignacion construye el codigo de forma inversa a %la que se leeria en el arbol hecho a mano end end end end elementos(i).173159 Elapsed time is 0.0345] ’1 1 0 ’i’ [ 0.0345] ’1 0 0 ’n’ [ 0. %sino.k).code.simbolo=char(elementos(i).elementos(i). %entropia resultado(i+1.0345] ’1 1 0 ’v’ [ 0.code==−1 %si elementos(i).simbolo). %le asigno el valor binario en m(j.:)={elementos(i).0345] ’1 0 0 ’r’ [ 0.0345] ’1 0 0 ’y’ [ 0. Caracter´ısticas que debe contener la aplicaci´on: Universidad Nacional de Quilmes 5 1º cuatrimestre 2013 .k).code else elementos(i).1034] ’0 1 1’ ’ ’ [ 0.0690] ’1 0 1 ’t’ [ 0.code=m(j.prob. %cambio codigo ascii por caracter ascii elementos(i).k).4).prob*length(elementos(i). H) fprintf('Longitud media de codigo es L = %f \n'. 3 Ejercicio Nº 3 a) Realizar un programa para simular el c´ odigo corrector de Error Hamming (7.simbolo.code m(j.0345] ’1 1 0 ’s’ [ 0.0345] ’1 0 0 ’l’ [ 0. %longitud media de codigo H=H+elementos(i).

Universidad Nacional de Quilmes 6 1º cuatrimestre 2013 . decodedhamming = decode(codehamming.k. 057 en formato . comprimir los mismos en los ˆ a) Realizar una tabla donde se pueda visualizar el cociente entre: (tama˜ no nuevo / tama˜ no original) x100. fprintf('la matriz generadora es: '). ACE. % Expresamos a n como 2ˆm−1.4) n = 7. msg=input('ingresa el mensaje a codificar(numero decimal <15): ').codehamming).k.Se debe poder ingresar el error en un bit de la palabra y visualizar el c´ alculo de paridad y la identificaci´on del error en la palabra codificada..n.1 Resoluci´ on La implementaci´on es el siguiente script: %Script para generar una codificaci n Hamming(7. [par mat. cuya salida es: ingresa el mensaje a codificar(numero decimal <15): 3 el mensaje codificado: 29 la matriz generadora es: genmat = 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 la matriz de paridad es: par mat = 1 0 0 0 1 0 0 0 1 1 1 0 el mensaje decodificado es: 3 4 Ejercicio Nº4 Dados tres archivos gr´ aficos llamados IMG formatos ZIP.genmat] = hammgen(m). la matriz de comprobaci´ on “H”. RAR.BMP . % largo del codeword k = 4.decodedhamming). fprintf('la matriz de paridad es: ').GIF .Comunicaci´on de Datos Mart´ın Nobl´ıa Se debe poder ingresar la palabra a codificar y visualizar la palabra codificada.. % largo del mensaje m = log2(n+1).- 3. % Creamos el codigo codehamming = encode(msg.n.'hamming/decimal').JPG . fprintf('el mensaje decodificado es: %d\n'.Se debe visualizar el s´ındrome y la distancia del c´ odigo.. display(par mat). fprintf('el mensaje codificado: %d\n'. display(genmat).'hamming/decimal').Se debe poder visualizar las matrices Generadora “G”.

5. Lo vemos en una nueva tabla: Formato de compresi´ on ZIP RAR ACE (tama˜ no comprimido/tama˜ no original * 100) promedio 92.1 Resoluci´ on Presentamos en la siguiente tabla (tama˜ no comprimido/tama˜ no original) * 100) Formato ZIP RAR ACE IMG 057. Para estos dos formatos. sin p´erdida de informaci´on.0929 100. es un formato comprimido con p´erdida de informaci´on.txt).1530 Vemos que el formato de compresi´ on con mejor desempe˜ no es el ACE.1920 80. en promedio.1288 IMG 057.2374 IMG 057.4243 81.8815 98. esto beneficia mucho al algoritmo de compresi´on que al trabajar con diccionarios variables se adaptan para una mejor performance. 5 Ejercicio Nº5 Dado 2 archivos de texto con la misma cantidad de caracteres pero cadenas de texto diferente (fuente1. realizar la compresi´ on de los mismos a formato ZIP. la menor relaci´on de compresi´on. El formato GIF.jpg 98.3913 44.0929 El formato JPG..1 Resoluci´ on Ya que en fuente1 hay un patr´on repetitivo.Evaluar los resultados y sacar conclusiones. por ser comprimidos es evidente que usando compresores no se lograr´ a una diferencia notable.bmp 78. En cambio el formato BMP conserva la informaci´on referida a los colores que van en cada p´ıxel y la cantidad de bits que les son asignados. Por lo tanto con este formato es m´as factible tener una mejor compresi´ on y as´ı una codificaci´on eficiente de la imagen que representa.gif 100 100. Los resultados fueron: Normal(Bytes) Comprimido(Bytes) 6 fuente1 850 134 fuente2 850 696 Ejercicio Nº6 Universidad Nacional de Quilmes 7 1º cuatrimestre 2013 .Comunicaci´on de Datos Mart´ın Nobl´ıa ˆ b) ¿Qu´e extensi´ on de archivo se puede comprimir m´as? ¿Por qu´e causas? ˆ c) ¿Cu´ al de todos los tipos de compresores utilizados tuvo mejor desempe˜ no en la compresi´on? 4.5506 41.txt y fuente2. Consideraremos al mejor compresor a aquel que tenga. tambi´en es formato comprimido pero con cantidad limitada de colores.9324 99.

0196 49. b y c).9167 45.5556 19.7244 60.9167 Podemos ver que para todos los casos en la lengua castellana hay una peor compresi´on.txt.doc 20 19.txt y ¨ otro en texto enriquecido de Word llamado word.1918 61.1 Resoluci´ on Formato ZIP RAR ACE txt.Comunicaci´on de Datos Mart´ın Nobl´ıa Dado 2 archivos de texto.doc repetir el punto 4 (con el ´ıtem a. Para este caso particular.7010 word.doc ya que el formato .txt se comprimiera menos que el . 7. esto puede deberse a la estructura menos repetitiva del mismo. el formato de compresi´on RAR fue el m´as eficiente. 7 Ejercicio Nº7 a) Dado dos archivos de texto llamados Castellano. Sacar conclusiones. repetir el punto 4 ´ıtem a) b) Realizar una tabla con la probabilidad de ocurrencia de cada uno de los caracteres para cada texto. uno en formato txt llamado ¨txt.0196 49. Universidad Nacional de Quilmes 8 1º cuatrimestre 2013 . Sacar conclusiones. c) Analizar los resultados de a) y b). los cuales est´ an en diferente lenguaje.0196 ingles.txt 60.1 Resoluci´ on Tenemos tablas de probabilidades.txt e ingles.txt 47.txt 49.5556 Era de esperarse que el . con respecto a la lengua inglesa. 6.txt es texto plano (o texto sin formato) y el .8333 47. Y relaci´ on de compresi´on para los formatos comunes: Formato ZIP RAR ACE Castellano.doc es de formato enriquecido.

037537 0.000422 0.000422 0.009098 h 0.000422 0.067482 0.004639 0.050831 s 0.049248 l 0.030063 m 0.000422 0.000633 0.001054 0.000593 N 0.103046 o 0.038370 t 0.000633 0.006959 0.010878 q 0.046605 0.068747 0.044502 u 0.000633 0.000791 ? 0.003758 ´ı 0.039857 0.006748 0.005142 ´a 0.001978 0.005483 0.013496 0.000396 ! 0.000211 0.000593 P 0.057951 r 0.022143 0.011867 y 0.020174 b 0.165348 a 0.047237 0.000593 T 0.001187 .000844 0.000422 0.001476 0.005142 z 0.000593 C 0.000198 k 0.040150 i 0.037748 0.063687 n 0.001187 : 0.002176 E 0.000633 0.000198 U 0.001476 0.000396 L 0.000211 0.000422 0. 0.020245 0.000198 ¡ 0.015816 0.000198 M 0. 9 1º cuatrimestre 2013 .008224 0.020877 0.000211 Ejercicio Nº8 Dado un archivo gr´ afico llamado IMG Universidad Nacional de Quilmes 058 en formato BMP.021510 0.000422 0.001187 Y 0.034019 c 0.008900 .012263 v 0.017292 0.005538 f 0.000791 x 0.000198 I 0.012658 .000211 0.000211 0.000989 S 0.002531 0. b k v I A ” T H W C ! ? E S Y ’ D F G L j q x B J M N P Ingl´es Probabilidad 0. 0.Comunicaci´on de Datos Mart´ın Nobl´ıa Castellano Simbolo Probabilidad 0.001898 0.000198 8 Simbolo e a o t n i h s r d l u m w g c y f .017081 0.055040 0.000198 u ´ 0.000593 ¿ 0.000989 D 0.000422 0.000211 0.003758 j 0.005934 ´e 0.000198 H 0.000198 V 0.002967 n ˜ 0.024723 p 0.039161 d 0.011076 g 0.089414 0.006527 ´o 0. p .048292 0.181780 0. 0.104628 e 0.016660 0.001187 A 0.000593 B 0.063897 0.002741 0.

9 Ejercicio Nº9 Averiguar qu´e tipos de algoritmos usa cada compresor (ZIP.2K En contraste con la imagen IMG 057. entre otros. ACE). En particular para el formato GIF ya que la compresi´ on ZIP utiliza un algoritmo muy parecido al LZW que es el utilizado para la compresi´on en formato GIF. c) Comparar los ´ıtem a y b. ˆ RAR Utiliza un algoritmo de compresi´ on basado en el LZSS (Lempel-Ziv-Storer-Szymanski) que.bmp son solo 3 barras de colores en una gran cantidad de pixeles (640x480). permite varios utilizar varios m´etodos de compresi´on. ARJ.1K 8.7K GIF 10. a su vez.1 Resoluci´ on Formato ZIP BMP JPG GIF BMP 3K 900. que utiliza algoritmo LZ77 combinado con codificaci´on Huffman. b) Comprimir el archivo original IMG 058.bmp que a simple vista posee una mayor cantidad de informaci´on. Imploded (implosi´ on). se basa en el LZ77. por su estructura. GZ.d) Analizar los resultados del punto 4 y los obtenidos en este. Universidad Nacional de Quilmes 10 1º cuatrimestre 2013 . Shannon-Fano. La compresi´on se hace menos eficiente en formatos JPG y GIF ya que son formatos comprimidos. 9. Sacar conclusiones. Deflate. utiliza LZW.1 Resoluci´ on ˆ ZIP ´ Este formato en particular. Shrunk (encogido). RAR.1K 10.1K JPG 1. ˆ ARJ Usa el algoritmo LZW. Esto conlleva a que dada la repetitividad de los colores se obtenga una muy buena compresi´on. ˆ ACE Utiliza Deflate un m´etodo tipo diccionario cuyo tama˜ no var´ıa entre 32K y 4096K lo que hace posible tener una mayor cantidad de palabras de c´ odigo en el diccionario posibilitando as´ı una mejor compresi´on a costa de un mayor tiempo de trabajo.BMP y los archivos resultantes del punto a) a formato ZIP. ˆ GZ se basa en el algoritmo Deflate.Comunicaci´on de Datos Mart´ın Nobl´ıa a) Convertir el mismo a JPG y GIF. 8. ´esta nueva imagen IMG 058.