Cálculo de entropía para una fuente sin memoria
Enviado por Lore Nava • 11 de Noviembre de 2016 • Práctica o problema • 1.428 Palabras (6 Páginas) • 358 Visitas
INSTITUTO POLITÉCNICO [pic 1][pic 2]
NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERÍA
Y TECNOLOGÍAS AVANZADAS IPN
MATERIA:
Teoría de la Información
ALUMNA:
Chávez Nava Olguín Lorena.
PROFESOR:
Rojas Beltrán Jorge
TEMA:
Cálculo de entropía para una fuente sin memoria
GRUPO: 2TV4
PRÁCTICA: No. 1
Desarrollo.-
Para la realización de esta práctica se llevó a cabo el análisis de un texto en español, como ejemplo utilizamos el cuento del Principito. Este texto nos sirvió para utilizarlo como la fuente sin memoria y de esta forma, pudimos calcular su entropía.
La entropía de una fuente sin memoria se obtiene por medio de una suma indexada de factores, los cuales son la probabilidad de enviar un símbolo del alfabeto que contiene la fuente, así como la cantidad de información que otorga ese símbolo.
Se obtuvieron dos valores diferentes de entropía de la misma fuente, un caso donde se considera la letra ‘ñ’ y otro en donde no se considera.
- Resultados obtenidos sin considerar la letra ‘ñ’
[pic 3][pic 4]
Con los datos obtenidos por el programa observamos que la probabilidad de emitir un espacio es la más alta de nuestra fuente, pero a su vez es el segundo símbolo que ofrece una menor cantidad de información, después de la letra ‘k’ ya que en nuestro texto no se presenta.
Las tres letras más utilizadas en el idioma español son: la ‘e’, la ‘a’ y la ‘o’. Observando los datos podemos notar que estas letras tienen una gran probabilidad por debajo del espacio de ser emitidas.
En cuanto a la cantidad de información, se observa que el símbolo que brinda mayor información es la letra ‘x’, a pesar de que tiene una de las probabilidades más bajas.
[pic 5] [pic 6] [pic 7]
[pic 8][pic 9]
[pic 10]
[pic 11][pic 12]
En cuanto al valor obtenido de la entropía, sabemos que se necesitan 3.972387 bits para cada símbolo enviado por la fuente.
Código fuente:
clc; close all; clear all;
archivo = fopen('C:\Users\loren_000\Documents\Teoría de la Info\principito.txt','r');
cadena=fscanf(archivo,'%c'); % guardar archivo en un vector
numcaracteres=length(cadena); % numero de caracteres del archivo
% cierre de archivo
fclose(archivo);
% vector con 26 letras de 27 del español mas el espacio =27 simbolos
ABC=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '];
%vector de repeticiones por cada caracter
ABC0=zeros(1,length(ABC)); %vector para conteo de repeticiones de c/letra
cont=1;
for x=1:length(ABC);
rep=0; % variable donde se guarda el # de repeticiones de 'x' caracter
for y=1:length(cadena);
if cadena(y)==ABC(x);
rep=rep+1;
end
end
ABC0(cont)=rep; % guardo el # de repeticiones en el vector de conteo
cont=cont+1;
fprintf('\n %c repeticiones: %d', ABC(x), ABC0(x));
end
p1=zeros(1,length(ABC0));
l1=zeros(1,length(ABC0));
for x=1:length(ABC0);
p=(ABC0(x)./sum(ABC0)); % calculo de probabilidad
p1(x)=p;
l=log2(1/p); % cantidad de informacion por caracter
if l==Inf
l=0;
end
l1(x)=l;
fprintf('\n %c:\trepeticiones %f\t\tP=%f\t\t l=%f bits \n', ABC(x), ABC0(x), p, l);
end
% calculo de la entropia como fuente sin memoria
h=zeros(1,length(p1));
for x=1:length(p1);
h(x)=p1(x)*l1(x);
end
H=sum(h);
fprintf('\n ENTROPIA COMO FUENTE SIN MEMORIA= %f bits/simbolo \n', H);
figure();
bar(p1)
title('Probabilidad');
ylabel('P(x)');
xlabel('Caracteres');
set(gca,'Xtick',1:numel(ABC),'XTickLabel',{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','[ ]'});
...