Explicación del código de la entropía
clc;
clear all;
a=0;
c=0;
d=0;
e=0;
f=0;
x=input('Ingrese el numero de mensajes: ');
y=zeros(x);
for n=1:x
fprintf('\nIngrese el la probabilidad del mensaje %i : ',n);
d=input('');
if d<1
y(n)=d;
else
fprintf('\nLa probabilidad debe ser menor a 1 ');
fprintf('\nReingrese la probabilidad del mensaje %i : ',n);e=input('');
y(n)=e;
end
c=sum(y);
end
if c(1)>1
fprintf('\nLa probabilidad de los mensajes es incongruente ');
elseif c(1)<=1
if c(1)<1
f=1-c(1);
fprintf('\nLa probabilidad de los mensajes es menor que 1 por %i \nSe recomienda aumentar el valor en las probabilidades\n ',f);
end
h=y;
for m=1:x
h(m)=-y(m)*log2(y(m));
b=b+h;
a=sum(h);fprintf('\nLa probabilidad del mensaje %i es de: ',m);
disp(h(m));
end
fprintf('\nLa entropía de la fuente es de: ');
disp(a(1));
end
En la variable “x” se guarda, con un mensaje que aparece por pantalla, la cantidad de mensajes de los que se dispone la probabilidad; y se crea una matriz de ceros del tamaño de los mensajes.
x=input('Ingrese el numero de mensajes: ');
y=zeros(x);
Luego sehace un for en el que se pedirán los valores de las probabilidades. Se hace un condicional en el que se analiza el valor de cada uno de las probabilidades; en el caso de ser menor que uno se guardara el valor ingresado, de lo contrario se mostrara un mensaje de error y se da la posibilidad de reingresar el valor. En ambos casos se guarda el valor en la matriz “y”.
for n=1:xfprintf('\nIngrese el la probabilidad del mensaje %i : ',n);
d=input('');
if d<1
y(n)=d;
else
fprintf('\nLa probabilidad debe ser menor a 1 ');
fprintf('\nReingrese la probabilidad del mensaje %i : ',n);
e=input('');
y(n)=e;
end
c=sum(y);
end
Se crea el vector “c” de la misma longitud de “y”, en el cual se guardara en la primera posición el valor de lassuma de todos los valores que contiene el vector “y”.
Se hace un condicional en el que se compara la primera posición del vector “c” para saber si los datos de las probabilidades están correctos. El valor es comparado, y si es mayor que uno aparece un mensaje de error y se termina el programa. Si el valor es menor que uno aparecerá un mensaje con la advertencia correspondiente y el valor quefalta para que las probabilidades sean correctas; sin embargo el programa se ejecutara y arrojara los resultados correspondientes. Si el valor de la suma es igual a uno se correrá el programa de forma natural.
if c(1)>1
fprintf('\nLa probabilidad de los mensajes es incongruente ');
elseif c(1)<=1
if c(1)<1
f=1-c(1);
fprintf('\nLa probabilidad de los mensajes es menor que 1por %i \nSe recomienda aumentar el valor en las probabilidades\n ',f);
end
Se crea una matriz de ceros del mismo tamaño de “y” llamada “h” y se hace un for en el que se van a realizar todas las operaciones. Al interior del for se recorre la matriz “h”, únicamente en la primera columna, guardando cada uno de los valores de la operación de la entropía, cuyos valores son sumados y guardados en laprimera posición del vector “a”. Luego se indica por pantalla la entropía de cada mensaje por separado.
h=y;
for m=1:x
h(m)=-y(m)*log2(y(m));
a=sum(h);
fprintf('\nLa entropia del mensaje %i es de: ',m);
disp(h(m));
end
Por ultimo se muestra por pantalla el resultado total de la entropía.
fprintf('\nLa entropía de la fuente es de: ');
disp(a(1));
end
Explicación delcódigo de Hoffman
clc;
clear all;
close all;
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
x=input('Ingrese el numero de mensajes: ');
if x>9
y=zeros(x);
for n=1:x
fprintf('\nIngrese el la probabilidad del mensaje %i : ',n);
d=input('');
if d<1
y(n)=d;
else
fprintf('\nLa probabilidad debe ser menor a 1 ');
fprintf('\nReingrese la probabilidad del mensaje %i :...
Regístrate para leer el documento completo.