?? generadordealfabeto.asv
字號:
s=sum(prob(:));%Suma probabilidades
s=roundn(s,-4);
lp=length(prob);
if (s==1);
entropia=prob.*log2(prob);%Calculo de la Entropia
entropia=-sum(entropia(:));%Calculo de la Entropia
pos=1:lp;
[prs idx]=sort(prob,'descend');%Se ordenan la probabilidades de mayor a menor
npos=pos(idx);%Se crea la variable "npos" con las posiciones con el orden anterior
idx=find(prs==min(prs(:)));%Se buscan las probabilidades mas peque馻s
tp=npos(idx);
tp=sort(tp,'descend');
npos(idx)=tp;
CodigoGenerado(1:lp)={''};%Variable donde se almacenan las palabras codigo
ps=npos;
np=lp;
cb=zeros([lp-1 3]);%Matriz que tiene el objetivo de lamacenar la historia del calculo de probabilidades
cnt=lp+1;
prb=prs;
for i=1:lp-1;
fst=ps(np-1);%Se toma la penultima posicion del vector posiciones
sec=ps(np);%Se toma al ultima posicion del vector de posiciones
if fst<=lp;%Si se cumple la condicion que fst sea menor que la longitud del vector de probabilidades se concatena un cero
CodigoGenerado(fst)=strcat('0',CodigoGenerado(fst));%Concatenacion de un cero la variable codigoGenerado en la posicion que apunta "fst"
else%Si no cumple la condicion se manda llamar la funcion "encod" que se encarga de decidir en que posicion se concatenara el 0
CodigoGenerado=encod(fst,cb,CodigoGenerado,'0',lp);
end
if sec<=lp%Si se cumple la condicion que fst sea menor que la longuitud del vector de probabilidades se concatena un uno
CodigoGenerado(sec)=strcat('1',CodigoGenerado(sec));
else%Si no cumple la condicion se manda llamar la funcion "encod" que se encarga de decidir en que posicion se concatenara el 0
CodigoGenerado=encod(sec,cb,CodigoGenerado,'1',lp);
end
cb(i,1)=cnt;%Se almacena el valor de contador que representa el calculo de las probabilidades mas peque馻s en el valor i del for actual
cb(i,2)=fst;%Se almacena la primer posicion con la que se calculo la nueva probabilidad que representa cnt
cb(i,3)=sec;%Se almacena la segunda posicion con la que se calculo la nueva probabilidad que representa cnt
if np>2%En esta zona se reaiza ajusta el nuevo vector
ps=ps(1:np-2);%Se redimenciona el vector de posiciones a su longuitud menos las dos probabilidades mas peque馻s
ps(np-1)=cnt;%Se almacena el contador de la nueva porbabilidad calculada
cnt=cnt+1;
prbt=prb(1:np-2);%Se retiran las dos probabilidades mas peque馻s
prbt(np-1)=prb(np-1)+prb(np);%Se adiere la nueva probabilidad al vector de probabilidades
prb=prbt;%Se copia el nuevo vector de probabilidades
[prb idx]=sort(prb,'descend');%Se reoderna las probabilidad de mayor a menor
ps=ps(idx);
idx=find(prb==prbt(np-1));%Se busca los siguientes valores mas peque駉s
tp=ps(idx);
tp=sort(tp,'descend');
ps(idx)=tp;
np=np-1;
end
end
redundancia=0;
for i=1:lp;
redundancia=redundancia+prob(i)*length(cell2mat(CodigoGenerado(i)));%Calculo de la redundancia
end
eficiencia=(entropia/redundancia)*100;%Calculo de la eficiencia
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -