informe_labo1
description
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