informe_labo1

11
Mart´ ın Nobl´ ıa Comunicaci´ on de Datos Laboratorio N 1 Profesor: Ing. Fabi´ an Iakinchuk Ayudante: Sr. Mart´ ın Castillo

description

Laboratorio comunicacion de datos

Transcript of informe_labo1

  • Martn Nobla

    Comunicacion de Datos

    Laboratorio N1

    Profesor:

    Ing. Fabian Iakinchuk

    Ayudante: Sr. Martn Castillo

  • To Lyapunov1

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

  • Comunicacion de Datos Martn Nobla

    1 Ejercicio N 1

    Dada una fuente de datos en un archivo de texto nombrado texto.txt :

    a) Escribir un algoritmo en lenguaje C, Visual C, Visual Basic o en Matlab de manera tal que calcule la probabilidadde ocurrencia de cada smbolo existente en la fuente. Mostrar en un listado (sea en pantalla o en otro archivo *.txt)cada elemento de la fuente con su probabilidad calculada asociada.

    b) Calcular la entropa de la fuente.

    1.1 Resolucion

    El siguiente script de Octave-Matlabimplementa la solucion:

    tic

    clear all

    clc

    disp('Programa que calcula la probabilidad de ocurrencia de cada simblo de una fuente de informacion');

    x1= input('ingres el path de tu archivo de texto:');

    fid=fopen(x1,'r+');

    tline = fgets(fid);

    fclose(fid);

    s = char(tline);

    ascii1 = char((32:127)+128);%ascii extendido

    ascii2 = char(32:127);%ascii normal

    ascii=horzcat(ascii1,ascii2);%concateno los dos

    %Prealocamos para mayor velocidad

    y=zeros(length(ascii));

    H=zeros(length(s));

    x=zeros(length(s));

    letras=zeros(length(ascii));

    for j = 1:length(ascii)

    x=find(s==ascii(j));

    if(isempty(x))

    continue;

    end

    y(j)=length(x)/(length(s)1); %Resto el caracter de fin de linealetras(j)=ascii(j);

    fprintf('la probabilidad de :%c >%.9f \n',ascii(j),length(x)/length(s));

    end

    fprintf('La suma de las probas es :%.9f\n',sum(y(:)));

    %Calculo de la entropia H(s)

    letras2=nonzeros(letras);

    prob=nonzeros(y);

    H=prob.*log2(1./prob);

    fprintf('La entropa de la fuente es : %f\n',sum(H(:)));

    Universidad Nacional de Quilmes 2 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    toc %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.txt

    la probabilidad de :a -->0.034782609

    la probabilidad de : -->0.191304348

    la probabilidad de :; -->0.008695652

    la probabilidad de :E -->0.008695652

    la probabilidad de :a -->0.121739130

    la probabilidad de :c -->0.017391304

    la probabilidad de :d -->0.026086957

    la probabilidad de :e -->0.113043478

    la probabilidad de :f -->0.008695652

    la probabilidad de :h -->0.026086957

    la probabilidad de :i -->0.034782609

    la probabilidad de :l -->0.052173913

    la probabilidad de :m -->0.017391304

    la probabilidad de :n -->0.043478261

    la probabilidad de :o -->0.026086957

    la probabilidad de :p -->0.017391304

    la probabilidad de :q -->0.043478261

    la probabilidad de :r -->0.043478261

    la probabilidad de :s -->0.034782609

    la probabilidad de :t -->0.017391304

    la probabilidad de :u -->0.069565217

    la probabilidad de :v -->0.017391304

    la probabilidad de :w -->0.017391304

    La suma de las probas es :1.000000000

    La entropa de la fuente es : 3.989736

    Elapsed time is 27.552871 seconds.

    2 Ejercicio N2

    Dado un archivo de texto nombrado texto2.txt el cual posee una longitud fija de 30 caracteres ASCII:

    a) Escribir un algoritmo en lenguaje C, Visual C, Visual Basic o en Matlab que codifique cada elemento de la fuenteusando codificacion Huffman. (Dicha codificacion puede ser mostrada en pantalla o en un archivo de salida *.txt)

    b) El software creado debe calcular la entropa y la longitud media del codigo generado.

    c) Calcular en forma manual o con el mismo software la eficiencia de la compresion.

    d) Verifique si el codigo generado es optimo.

    2.1 Resolucion

    La implementacion de la solucion es la siguiente:

    Universidad Nacional de Quilmes 3 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    function Huffman(id texto)

    tic

    clc

    textoid=fopen(id texto); %se abre el archivo y se le asigna un id

    [A,count]=fscanf(textoid,'%c');

    fclose(textoid);

    A=double(A);

    A=sort(A);

    %algoritmo de filtrado de caracteres de control (tab, salto de linea, etc)

    check=false;

    r=1;

    while check %mientras sea trueif A(r)30

    error('El texto posee mas de 30 caracteres ASCII');

    end

    count=countr+1 ; %fix para cantidad de caracteres leidos menos los caracteres de control

    elementos(1)=struct('simbolo',ref,'prob', 1/count,'code',1,'esSuma',0);elementos1=struct('simbolo',ref,'prob', 1/count,'code',1,'esSuma',0);

    j=1;

    for i=(r+1):length(A)

    if A(i)==ref

    elementos1(j).prob=((elementos(j).prob*count)+1)/count; %multiplico por el total,

    elementos=elementos1; %parche pseudoprealloc%sumo un elemento y divido por el total para calcular la probabilidad

    else

    ref=A(i); %cambio de referencia de comparacion

    j=j+1;

    elementos1(j)=struct('simbolo',ref,'prob',1/count,'code',1,'esSuma',0); %agrego estructura%para nuevo simbolo y su respectiva probabilidad

    elementos=elementos1; %parche pseudopreallocend

    end

    elementos=ordenar(elementos); %se ordena elementos para probabilidades de forma creciente

    m(length(elementos)1,length(elementos))=struct('simbolo',1,'prob',1,'code',1,'esSuma',0);[elementos,m(1,:)]=pseudotree(elementos,m); %ver funcion pseudotree

    i=1;

    %mientras el elemento m(i,1) tenga probabilidad distinta de 1, se ordena m

    %y se llama a pseudotree (ver funcion)

    while m(i,1).prob6=1

    m(i,:)=ordenar(m(i,:));

    [m(i,:),m(i+1,:)]=pseudotree(m(i,:),m);

    i=i+1;

    end

    L=0; %longitud media de codigo

    H=0; %entropia

    resultado=cell(length(elementos)+1,3); %creo una celda para mostrar los datos al final

    resultado(1,:)={'Simbolos';'Probabilidad';'Codigo'}; %primera filafor 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).simbolo==m(j,k).simbolo)) && m(j,k).code6=1%si encuentro el simbolo representado por el ascii en

    %elementos(i).simbolo en m(j,k).simbolo y este tiene codigo

    %asignado distinto de 1 entonces

    Universidad Nacional de Quilmes 4 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    if elementos(i).code==1 %si elementos(i).code no tenia asignado un valor binarioelementos(i).code=m(j,k).code; %le asigno el valor binario en m(j,k).code

    else

    elementos(i).code=[elementos(i).code m(j,k).code]; %sino, concateno con m(j,k).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).simbolo=char(elementos(i).simbolo); %cambio codigo ascii por caracter ascii

    elementos(i).code=fliplr(elementos(i).code); %invierto el codigo para que sea el correcto

    L=L+elementos(i).prob*length(elementos(i).code); %longitud media de codigo

    H=H+elementos(i).prob*log2(elementos(i).prob); %entropiaresultado(i+1,:)={elementos(i).simbolo;elementos(i).prob;num2str(elementos(i).code)}; %datos para mostrar

    end

    disp('Elementos y su respectiva codificacion')

    disp(resultado)

    fprintf('Entropia H = %f \n', H)fprintf('Longitud media de codigo es L = %f \n', L)fprintf('Eficiencia de codigo n = %f \n', H/L*100)toc

    end

    Cuya salida es la siguiente:

    Elementos y su respectiva codificacion

    Simbolos Probabilidad Codigo

    N [ 0.0345] 1 1 1 0 0

    b [ 0.0345] 1 1 1 0 1

    d [ 0.0345] 1 1 0 1 0

    h [ 0.0345] 1 1 0 1 1

    i [ 0.0345] 1 0 0 1 0

    l [ 0.0345] 1 0 0 1 1

    r [ 0.0345] 1 1 0 0 0

    s [ 0.0345] 1 1 0 0 1

    v [ 0.0345] 1 0 0 0 0

    y [ 0.0345] 1 0 0 0 1

    n [ 0.0690] 1 0 1 0

    t [ 0.0690] 1 0 1 1

    o [ 0.1034] 1 1 1 1

    a [ 0.1034] 0 1 0

    e [ 0.1034] 0 1 1

    [ 0.2069] 0 0

    Entropia H = 3.693345

    Longitud media de codigo es L = 3.724138

    Eficiencia de codigo n = 99.173159

    Elapsed time is 0.109090 seconds.

    3 Ejercicio N 3

    a) Realizar un programa para simular el codigo corrector de Error Hamming (7.4).- El Programa debe cumplir lassiguientes caractersticas y puede ser elaborado en un .M de matlab aprovechando las libreras que posee el softwareo puede ser implementando en lenguaje c, c++ y visual Basic. Caractersticas que debe contener la aplicacion:

    Universidad Nacional de Quilmes 5 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    Se debe poder ingresar la palabra a codificar y visualizar la palabra codificada.- Se debe poder ingresar el error enun bit de la palabra y visualizar el calculo de paridad y la identificacion del error en la palabra codificada.- Se debepoder visualizar las matrices Generadora G, la matriz de comprobacion H.- Se debe visualizar el sndrome y ladistancia del codigo.-

    3.1 Resolucion

    La implementacion es el siguiente script:

    %Script para generar una codificaci n Hamming(7,4)

    n = 7; % largo del codeword

    k = 4; % largo del mensaje

    m = log2(n+1); % Expresamos a n como 2m1.

    msg=input('ingresa el mensaje a codificar(numero decimal

  • Comunicacion de Datos Martn Nobla

    b) Que extension de archivo se puede comprimir mas? Por que causas?

    c) Cual de todos los tipos de compresores utilizados tuvo mejor desempeno en la compresion?

    4.1 Resolucion

    Presentamos en la siguiente tabla (tamano comprimido/tamano original) * 100)

    Formato IMG 057.bmp IMG 057.jpg IMG 057.gif

    ZIP 78.3913 98.8815 100

    RAR 44.5506 98.9324 100.0929

    ACE 41.1288 99.2374 100.0929

    El formato JPG, es un formato comprimido con perdida de informacion. El formato GIF, tambien es formato comprimidopero con cantidad limitada de colores, sin perdida de informacion. Para estos dos formatos, por ser comprimidos es evi-dente que usando compresores no se lograra una diferencia notable. En cambio el formato BMP conserva la informacionreferida a los colores que van en cada pxel y la cantidad de bits que les son asignados. Por lo tanto con este formato esmas factible tener una mejor compresion y as una codificacion eficiente de la imagen que representa.Consideraremos al mejor compresor a aquel que tenga, en promedio, la menor relacion de compresion.Lo vemos en una nueva tabla:

    Formato de compresion (tamano comprimido/tamano original * 100) promedio

    ZIP 92.4243

    RAR 81.1920

    ACE 80.1530

    Vemos que el formato de compresion con mejor desempeno es el ACE.

    5 Ejercicio N5

    Dado 2 archivos de texto con la misma cantidad de caracteres pero cadenas de texto diferente (fuente1.txt yfuente2.txt), realizar la compresion de los mismos a formato ZIP.- Evaluar los resultados y sacar conclusiones.

    5.1 Resolucion

    Ya que en fuente1 hay un patron repetitivo, esto beneficia mucho al algoritmo de compresion que al trabajar con dic-cionarios variables se adaptan para una mejor performance. Los resultados fueron:

    fuente1 fuente2

    Normal(Bytes) 850 850

    Comprimido(Bytes) 134 696

    6 Ejercicio N6

    Universidad Nacional de Quilmes 7 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    Dado 2 archivos de texto, uno en formato txt llamado txt.txt y otro en texto enriquecido de Word llamado word.docrepetir el punto 4 (con el tem a, b y c). Sacar conclusiones.

    6.1 Resolucion

    Formato txt.txt word.doc

    ZIP 60.7244 20

    RAR 60.1918 19.5556

    ACE 61.7010 19.5556

    Era de esperarse que el .txt se comprimiera menos que el .doc ya que el formato .txt es texto plano (o texto sin formato)y el .doc es de formato enriquecido.Para este caso particular, el formato de compresion RAR fue el mas eficiente.

    7 Ejercicio N7

    a) Dado dos archivos de texto llamados Castellano.txt e ingles.txt, los cuales estan en diferente lenguaje, repetir elpunto 4 tem a)

    b) Realizar una tabla con la probabilidad de ocurrencia de cada uno de los caracteres para cada texto.

    c) Analizar los resultados de a) y b). Sacar conclusiones.

    7.1 Resolucion

    Tenemos tablas de probabilidades. Y relacion de compresion para los formatos comunes:

    Formato Castellano.txt ingles.txt

    ZIP 49.0196 47.9167

    RAR 49.0196 45.8333

    ACE 49.0196 47.9167

    Podemos ver que para todos los casos en la lengua castellana hay una peor compresion, esto puede deberse a la estructuramenos repetitiva del mismo, con respecto a la lengua inglesa.

    Universidad Nacional de Quilmes 8 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    Castellano

    Simbolo Probabilidad

    0.165348

    a 0.104628

    e 0.103046

    o 0.063687

    n 0.057951

    r 0.050831

    s 0.049248

    l 0.044502

    u 0.040150

    i 0.039161

    d 0.038370

    t 0.034019

    c 0.030063

    m 0.024723

    p 0.020174

    b 0.012658

    , 0.012263

    v 0.011867

    y 0.011076

    g 0.010878

    q 0.009098

    h 0.008900

    . 0.006527

    o 0.005934

    e 0.005538

    f 0.005142

    a 0.005142

    z 0.003758

    0.003758

    j 0.002967

    n 0.002176

    E 0.001978

    - 0.001187

    ; 0.001187

    A 0.001187

    Y 0.001187

    : 0.000989

    D 0.000989

    S 0.000791

    x 0.000791

    ? 0.000593

    B 0.000593

    N 0.000593

    P 0.000593

    T 0.000593

    0.000593

    C 0.000396

    L 0.000396

    ! 0.000198

    H 0.000198

    I 0.000198

    M 0.000198

    U 0.000198

    V 0.000198

    k 0.000198

    0.000198

    u 0.000198

    Ingles

    Simbolo Probabilidad

    0.181780

    e 0.089414

    a 0.068747

    o 0.067482

    t 0.063897

    n 0.055040

    i 0.048292

    h 0.047237

    s 0.046605

    r 0.039857

    d 0.037748

    l 0.037537

    u 0.022143

    m 0.021510

    w 0.020877

    g 0.020245

    c 0.017292

    y 0.017081

    f 0.016660

    , 0.015816

    p 0.013496

    . 0.008224

    b 0.006959

    k 0.006748

    v 0.005483

    I 0.004639

    A 0.002741

    0.002531

    T 0.001898

    H 0.001476

    W 0.001476

    C 0.001054

    ! 0.000844

    ? 0.000633

    E 0.000633

    S 0.000633

    Y 0.000633

    0.000422

    D 0.000422

    F 0.000422

    G 0.000422

    L 0.000422

    j 0.000422

    q 0.000422

    x 0.000422

    - 0.000211

    B 0.000211

    J 0.000211

    M 0.000211

    N 0.000211

    P 0.000211

    8 Ejercicio N8

    Dado un archivo grafico llamado IMG 058 en formato BMP.

    Universidad Nacional de Quilmes 9 1 cuatrimestre 2013

  • Comunicacion de Datos Martn Nobla

    a) Convertir el mismo a JPG y GIF.

    b) Comprimir el archivo original IMG 058.BMP y los archivos resultantes del punto a) a formato ZIP.

    c) Comparar los tem a y b. Sacar conclusiones.-

    d) Analizar los resultados del punto 4 y los obtenidos en este.

    8.1 Resolucion

    Formato BMP JPG GIF

    ZIP 3K 1.7K 10.1K

    BMP 900.1K

    JPG 8.1K

    GIF 10.2K

    En contraste con la imagen IMG 057.bmp que a simple vista posee una mayor cantidad de informacion, esta nuevaimagen IMG 058.bmp son solo 3 barras de colores en una gran cantidad de pixeles (640x480). Esto conlleva a que dadala repetitividad de los colores se obtenga una muy buena compresion.La compresion se hace menos eficiente en formatos JPG y GIF ya que son formatos comprimidos. En particular para elformato GIF ya que la compresion ZIP utiliza un algoritmo muy parecido al LZW que es el utilizado para la compresionen formato GIF.

    9 Ejercicio N9

    Averiguar que tipos de algoritmos usa cada compresor (ZIP, RAR, ARJ, GZ, ACE).

    9.1 Resolucion

    ZIPEste formato en particular, por su estructura, permite varios utilizar varios metodos de compresion. Deflate, queutiliza algoritmo LZ77 combinado con codificacion Huffman; Shrunk (encogido), utiliza LZW; Imploded (implosion),Shannon-Fano; entre otros.

    RARUtiliza un algoritmo de compresion basado en el LZSS (Lempel-Ziv-Storer-Szymanski) que, a su vez, se basa en elLZ77.

    GZse basa en el algoritmo Deflate.

    ARJUsa el algoritmo LZW.

    ACE Utiliza Deflate un metodo tipo diccionario cuyo tamano vara entre 32K y 4096K lo que hace posible teneruna mayor cantidad de palabras de codigo en el diccionario posibilitando as una mejor compresion a costa de unmayor tiempo de trabajo.

    Universidad Nacional de Quilmes 10 1 cuatrimestre 2013

    Ejercicio N 1Resolucin

    Ejercicio N2Resolucin

    Ejercicio N 3Resolucin

    Ejercicio N4Resolucin

    Ejercicio N5Resolucin

    Ejercicio N6Resolucin

    Ejercicio N7Resolucin

    Ejercicio N8 Resolucin

    Ejercicio N9Resolucin