Documentos de Académico
Documentos de Profesional
Documentos de Cultura
hnoguera.wordpress.com
Archivo asignar_codigos.m
function y = asignar_codigos(arbol, n_simbolos)
% Autor: Herminio Noguera Ruiz.
% Asignacin de cdigos a cada smbolo.
global y
y = cell(n_simbolos, 1);
asignar_codigos2(arbol, []);
Archivo asignar_codigos2.m
% Autor: Herminio Noguera Ruiz.
function asignar_codigos2(arbol, dum)
% Autor: Herminio Noguera Ruiz.
% Funcin llamada por asignar_codigos.
% Usa recursividad para ir asignando cdigos.
global y
if isa(arbol, 'cell')
asignar_codigos2(arbol{1}, [dum 0]);
asignar_codigos2(arbol{2}, [dum 1]);
else
y{arbol} = setstr(48+dum);
end
Archivo huff.m
% Autor: Herminio Noguera Ruiz.
function arbol = huff(Pi);
%
%
%
%
%
%
%
%
%
arbol = cell(length(Pi),1);
% Genera la estructura de celdas.
for i = 1:length(Pi)
% Rellena las celdas segn el nmero
arbol{i} = i;
% de smbolos en el alfabeto.
end
while size(arbol)-2
% Se repite hasta que solo haya dos ramas.
[Pi,i] = sort(Pi);
% Ordena las probabilidades de forma ascendente.
arbol = arbol(i);
% Reordena el rbol.
arbol{2} = {arbol{1},arbol{2}};
% Une las ramas 1 y 2
arbol(1)=[];
% y reduce.
Pi(2) = Pi(1)+Pi(2);
% Une probabilidades.
Pi(1)=[];
end
Archivo huffman.m
% Autor: Herminio Noguera Ruiz.
function [codigo, compresion] = huffman (Pi);
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Archivo test.m
% Autor: Herminio Noguera Ruiz.
% Test del algoritmo codificador de Cdigo Huffman.
% ------------------------------------------------Pi = [5 7 9 15 32 99 78];
fprintf('Nmero de apariencias de smbolos fuente:\n');
fprintf('-----------------------------------------\n\n');
for i=1:length(Pi)
fprintf('\tSmbolo %d: %d\n', i, Pi(i));
end
[codigo, compresion] = huffman (Pi);
codigo
compresion
hnoguera.wordpress.com