Cálculo de entropía para una fuente sin memoria
Enviado por monto2435 • 23 de Abril de 2018 • 1.063 Palabras (5 Páginas) • 462 Visitas
...
figure() ;
bar(l1)
title('Cantidad de información');
ylabel('I(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','[ ]'});
Se realizaron algunas modificaciones dentro del código, como el agregar la función bar() la cual genera la gráfica de barras de la probabilidad de cada símbolo, así como también la cantidad de información que contiene cada símbolo. A cada gráfica se le asignó su nombre y a los ejes también.
- Resultados obtenidos considerando la letra ‘ñ’[pic 13][pic 14]
Se le incluyó la letra ñ a la secuencia de nuestro abecedario. De igual forma obtuvimos la probabilidad de cada símbolo, su cantidad de información y la entropía de la fuente.
Como en el caso anterior, el espacio es el símbolo con mayor probabilidad, seguida por los símbolos ‘e’, ‘a’, y ‘o’.
En cuanto a la cantidad de información, el símbolo ‘x’ es el que contiene una mayor cantidad de información, aunque su probabilidad es una de las más pequeñas.
[pic 15] [pic 16][pic 17]
[pic 18]
[pic 19]
[pic 20]
[pic 21]
[pic 22][pic 23]
La letra ‘ñ’ provocó un cambio en la entropía muy pequeño, ya que la probabilidad de que sea emitida es muy pequeña, pero hablando de la cantidad de información, este símbolo nos otorga una gran cantidad de información de la fuente, y se puede observar que se encuentra dentro de las primeras letras con mayor cantidad de información.
Al incrementar la entropía sabemos que el promedio de información que nos da cada símbolo, aumentó ligeramente.
Código fuente:
clc; close all; clear all;
archivo = fopen('C:\Users\loren_000\Documents\Teoría de la Info\con_ñ\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','[
...