SlideShare uma empresa Scribd logo
1 de 8
Instituto Politécnico Nacional
Introducción a los Sistemas de Comunicación Seguros
Unidad MISTI Culhuacan
Presentado a: Dr. Gualberto Aguilar Torres
Tarea
Sistemas Huffman
9
Por: Yango Alexander Colmenares
Fecha
Octubre de 2013
%% INSTITUTO POLITECNICO NACIONAL-MISTI CULHUACAN --- MEXICO DF 2013
%%Desarrollado por:Yango Colmenares
%Presentado a : Dr. Gualberto Aguilar Torres
%Programación en Matlab
%Codigo Huffman
clc;
clear all;
close all;
% Aqui se lee el archivo .txt
fileID = fopen('pruebaProba.txt');
% Se utiliza el comando fscanf para analizar el contenido del archivo
texto = fscanf(fileID,'%c');
% Se convierte el texto a minusculas
texto = lower(texto);
% En la siguiente variable obtenemos el total de letras del texto aunque
% se repitan, contanto espacios en blanco, simbolos, etc.
totalLetras = length(texto);
% Algoritmo para quitar acentos a vocales
for j=1:length(texto)
if strcmp(texto(j),'á')
texto(j)='a';
elseif strcmp(texto(j),'é')
texto(j)='e';
elseif strcmp(texto(j),'í')
texto(j)='i';
elseif strcmp(texto(j),'ó')
texto(j)='o';
elseif strcmp(texto(j),'ú')
texto(j)='u';
end
end
clear j;
% El comando control de flujo del texto 'ENTER' lo cambiamos por un
espacio
% en blanco
for j=1:length(texto)
if isstrprop(texto(j), 'cntrl')
texto(j)=' ';
end
end
clear j;
% Inicializamos la variable palabras Solas que contendra las palabra del
% texto sin repetirse
letrasSolas(1) = texto(1);
% Algoritmo que nos ayuda a encontrar las palabras sin repetirse del
texto
% para irlas guardando en el vector palabrasSolas
indicador = 0;
for j=1:length(texto)
for i=1:length(letrasSolas)
% Para comparar cadenas: strcmp(cadena1, cadena2);
if strcmp(letrasSolas(i),texto(j))
indicador = 1;
end
end
if indicador ~= 1
letrasSolas(i+1) = texto(j);
end
indicador = 0;
end
clear j i indicador;
% El siguiente algoritmo nos ayuda a contar el numero de palabras que se
% repiten dentro del texto cargado
contadorLetras = zeros(1,length(letrasSolas));
for j=1:length(letrasSolas)
for i=1:length(texto)
if strcmp(letrasSolas(j),texto(i))
contadorLetras(j) = contadorLetras(j) + 1;
end
end
end
clear j i;
% Histograma de las palabras encontradas dentro del texto mostrando la
% frecuencia de ellas
% bar(contadorLetras);
% El siguiente codigo obtiene la probabilidad de cada palabra
probaLetras = zeros(1,length(letrasSolas));
for j=1:length(letrasSolas)
probaLetras(j) = contadorLetras(j)/totalLetras;
end
clear j;
% Hasta aqui se termino de analizar el texto y se puede ahora proseguir
con
% la codificacion Huffman
%% Algoritmo de Huffman
% La variable letrasSolas las pasamos a celdas
for i=1:length(letrasSolas)
letrasSolasCell{i,1} = letrasSolas(i);
probaLetrasCell{i,1} = probaLetras(i);
codigosLetrasCell{i,1} = '';
end
clear i;
% Las siguientes variables nos ayudaran a realizar el algoritmo de
huffman
letrasSolasCellSort = letrasSolasCell;
probaLetrasCellSort = probaLetrasCell;
% Acomodamos las probabilidades de forma descendiente
for j=1:length(probaLetrasCellSort)
for i=1:length(probaLetrasCellSort)-1
if probaLetrasCellSort{i} < probaLetrasCellSort{i+1}
aux = probaLetrasCellSort{i};
aux1 = letrasSolasCellSort{i};
probaLetrasCellSort{i} = probaLetrasCellSort{i+1};
letrasSolasCellSort{i} = letrasSolasCellSort{i+1};
probaLetrasCellSort{i+1} = aux;
letrasSolasCellSort{i+1} = aux1;
end
end
end
clear j i aux aux1;
tope = length(letrasSolasCellSort);
for i=1:length(letrasSolasCellSort)-2
for j=1:tope-1
if j == tope-1
probaLetrasCellSort{j,i+1} =
probaLetrasCellSort{j,i}+probaLetrasCellSort{j+1,i};
sumasHuffman{i,1} = probaLetrasCellSort{j,i+1};
else
probaLetrasCellSort{j,i+1} = probaLetrasCellSort{j,i};
end
end
for k=1:tope-1
for l=1:tope-2
if probaLetrasCellSort{l,i+1} < probaLetrasCellSort{l+1,i+1}
aux = probaLetrasCellSort{l,i+1};
probaLetrasCellSort{l,i+1} =
probaLetrasCellSort{l+1,i+1};
probaLetrasCellSort{l+1,i+1} = aux;
end
end
end
tope = tope-1;
end
clear tope i j k l aux;
probaCopiaSort = probaLetrasCellSort;
tope = length(letrasSolasCellSort);
for i=1:length(letrasSolasCellSort)
indexLetrasSolas{i,1} = i;
end
clear i;
% Esta variable indicara hasta cuando se dejara de borrar las celdas para
una
% mejor busqueda del código
indicador = 0;
indPos = 0;
for j=1:length(letrasSolasCell)
for i=1:length(letrasSolasCell)-2
if j == 1
aux = indexLetrasSolas{j,i};
aux1 = probaLetrasCellSort{aux,i};
if (aux == tope) || (aux == tope-1)
for k=tope-1:-1:1
if sumasHuffman{i} == probaLetrasCellSort{k,i+1}
indexLetrasSolas{j,i+1} = k;
indicador = indicador + 1;
break;
end
end
else
for k=aux:tope-1
if indicador == 0
if aux1 == probaLetrasCellSort{k,i+1}
indexLetrasSolas{j,i+1} = k;
probaLetrasCellSort{aux,i} = 0;
break;
end
else
if aux1 == probaLetrasCellSort{k,i+1}
indexLetrasSolas{j,i+1} = k;
break;
end
end
end
end
tope = tope-1;
else
aux = indexLetrasSolas{j,i};
aux1 = probaLetrasCellSort{aux,i};
if (aux == tope) || (aux == tope-1)
for k=tope-1:-1:1
if sumasHuffman{i} == probaLetrasCellSort{k,i+1}
indexLetrasSolas{j,i+1} = k;
indicador = indicador + 1;
break;
end
end
else
for k=aux:tope-1
if indicador == 0
if aux1 == probaLetrasCellSort{k,i+1}
if k == indexLetrasSolas{j-1,i+1}
indexLetrasSolas{j,i+1} = k+1;
probaLetrasCellSort{aux,i} = 0;
break;
else
indexLetrasSolas{j,i+1} = k;
probaLetrasCellSort{aux,i} = 0;
break;
end
end
else
if aux1 == probaLetrasCellSort{k,i+1}
indexLetrasSolas{j,i+1} = k;
break;
end
end
end
end
tope = tope-1;
end
end
indicador = 0;
tope = length(letrasSolasCellSort);
end
tope = length(letrasSolasCellSort);
for j=1:length(letrasSolasCell)
for i=1:length(letrasSolasCell)-1
if indexLetrasSolas{j,i} == tope
codigosLetrasCell{j} = strcat(codigosLetrasCell{j},'1');
elseif indexLetrasSolas{j,i} == tope-1
codigosLetrasCell{j} = strcat(codigosLetrasCell{j},'0');
end
tope = tope - 1;
end
tope = length(letrasSolasCellSort);
end
% Creamos una tabla que servira de muestra para visualizar las
% codificaciones
for i=1:length(letrasSolasCell)
tabla{i,1} = letrasSolasCellSort{i,1};
end
for i=1:length(letrasSolasCell)
tabla{i,2} = probaCopiaSort{i,1};
end
for i=1:length(letrasSolasCell)
tabla{i,3} = codigosLetrasCell{i,1};
end
% Analisis del codigo y verificacion del sistema Huffman
% Crea la variable codificacion que contendra todo el texto codificado
for j=1:length(letrasSolasCellSort)
if strcmp(texto(1),letrasSolasCellSort{j})
codificacion = codigosLetrasCell{j};
end
end
% Codificar el texto analizado
for i=2:length(texto)
for j=1:length(letrasSolasCellSort)
if strcmp(texto(i),letrasSolasCellSort{j})
codificacion = strcat(codificacion,codigosLetrasCell{j});
end
end
end
% Copiamos la codificacion tal y como nos la entrega el algoritmo
anterior
% como copia segura
codificacion1 = codificacion;
% El siguiente algoritmo agrega '0's a la derecha para despues poderlo
% organizar en grupos de 8 tipo modulos
if mod(length(codificacion),8) ~= 0
for j=length(codificacion):length(codificacion)+7-
mod(length(codificacion),8)
codificacion(j+1) = '0';
end
end
% % Agrupar codificacion en grupos de 8 bits
i=1;
for j=1:floor(length(codificacion)/8)
grupos8Bits{j} = codificacion(i:i+7);
i=i+8;
end
% % Agrupar codificacion en grupos de 4 bits
i=1;
for j=1:floor(length(codificacion)/4)
grupos4Bits{j} = codificacion(i:i+3);
i=i+4;
end
% % Algoritmo que pasa la codificacion a Hexadecimal
if strcmp(grupos4Bits{1},'0000')
codificacionHex = '0';
elseif strcmp(grupos4Bits{1},'0001')
codificacionHex = '1';
elseif strcmp(grupos4Bits{1},'0010')
codificacionHex = '2';
elseif strcmp(grupos4Bits{1},'0011')
codificacionHex = '3';
elseif strcmp(grupos4Bits{1},'0100')
codificacionHex = '4';
elseif strcmp(grupos4Bits{1},'0101')
codificacionHex = '5';
elseif strcmp(grupos4Bits{1},'0110')
codificacionHex = '6';
elseif strcmp(grupos4Bits{1},'0111')
codificacionHex = '7';
elseif strcmp(grupos4Bits{1},'1000')
codificacionHex = '8';
elseif strcmp(grupos4Bits{1},'1001')
codificacionHex = '9';
elseif strcmp(grupos4Bits{1},'1010')
codificacionHex = 'A';
elseif strcmp(grupos4Bits{1},'1011')
codificacionHex = 'B';
elseif strcmp(grupos4Bits{1},'1100')
codificacionHex = 'C';
elseif strcmp(grupos4Bits{1},'1101')
codificacionHex = 'D';
elseif strcmp(grupos4Bits{1},'1110')
codificacionHex = 'E';
elseif strcmp(grupos4Bits{1},'1111')
codificacionHex = 'F';
end
for j=2:length(grupos4Bits)
if strcmp(grupos4Bits{j},'0000')
codificacionHex = strcat(codificacionHex,'0');
elseif strcmp(grupos4Bits{j},'0001')
codificacionHex = strcat(codificacionHex,'1');
elseif strcmp(grupos4Bits{j},'0010')
codificacionHex = strcat(codificacionHex,'2');
elseif strcmp(grupos4Bits{j},'0011')
codificacionHex = strcat(codificacionHex,'3');
elseif strcmp(grupos4Bits{j},'0100')
codificacionHex = strcat(codificacionHex,'4');
elseif strcmp(grupos4Bits{j},'0101')
codificacionHex = strcat(codificacionHex,'5');
elseif strcmp(grupos4Bits{j},'0110')
codificacionHex = strcat(codificacionHex,'6');
elseif strcmp(grupos4Bits{j},'0111')
codificacionHex = strcat(codificacionHex,'7');
elseif strcmp(grupos4Bits{j},'1000')
codificacionHex = strcat(codificacionHex,'8');
elseif strcmp(grupos4Bits{j},'1001')
codificacionHex = strcat(codificacionHex,'9');
elseif strcmp(grupos4Bits{j},'1010')
codificacionHex = strcat(codificacionHex,'A');
elseif strcmp(grupos4Bits{j},'1011')
codificacionHex = strcat(codificacionHex,'B');
elseif strcmp(grupos4Bits{j},'1100')
codificacionHex = strcat(codificacionHex,'C');
elseif strcmp(grupos4Bits{j},'1101')
codificacionHex = strcat(codificacionHex,'D');
elseif strcmp(grupos4Bits{j},'1110')
codificacionHex = strcat(codificacionHex,'E');
elseif strcmp(grupos4Bits{j},'1111')
codificacionHex = strcat(codificacionHex,'F');
end
end
%Se resuelve el codigo expresando la funcionalidad segun el texto marcado
fclose(fileID);
clear ans;

Mais conteúdo relacionado

Mais procurados

Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
David
 
Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclos
Sohar Carr
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacion
SERCOMPFAST
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
Clariza
 
Tema vi guia de c 2
Tema vi guia de c 2Tema vi guia de c 2
Tema vi guia de c 2
Maye Re
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
Karina Arguedas Ruelas
 

Mais procurados (16)

Codigo detección y corrección de errores (yango colmenares)
Codigo detección y corrección de errores (yango colmenares)Codigo detección y corrección de errores (yango colmenares)
Codigo detección y corrección de errores (yango colmenares)
 
Clase 6
Clase 6Clase 6
Clase 6
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 
Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclos
 
Estructuras de control C++
Estructuras de control C++Estructuras de control C++
Estructuras de control C++
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacion
 
Fundamentos de programación 1. diseño de algoritmos
Fundamentos de programación 1. diseño de algoritmosFundamentos de programación 1. diseño de algoritmos
Fundamentos de programación 1. diseño de algoritmos
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Variables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeIntVariables, expresiones y ejecución de condiciones les en PSeInt
Variables, expresiones y ejecución de condiciones les en PSeInt
 
Estructura switch case
Estructura switch caseEstructura switch case
Estructura switch case
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
 
Instrucciones de control de salto
Instrucciones de control de saltoInstrucciones de control de salto
Instrucciones de control de salto
 
Tema vi guia de c 2
Tema vi guia de c 2Tema vi guia de c 2
Tema vi guia de c 2
 
Escuela
EscuelaEscuela
Escuela
 
Sentencias de control
Sentencias de controlSentencias de control
Sentencias de control
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 

Destaque

רשימת רמת גן נקייה
 רשימת רמת גן נקייה רשימת רמת גן נקייה
רשימת רמת גן נקייה
liquidspice
 
Jgbcfybt ghjub
Jgbcfybt ghjubJgbcfybt ghjub
Jgbcfybt ghjub
applefrusk
 
ACC presentation for QA Club Kiev
ACC presentation for QA Club KievACC presentation for QA Club Kiev
ACC presentation for QA Club Kiev
Nikita Knysh
 
Software Testing Foundations Part 8 - Test Tools
Software Testing Foundations Part 8 - Test ToolsSoftware Testing Foundations Part 8 - Test Tools
Software Testing Foundations Part 8 - Test Tools
Nikita Knysh
 
Fundamental Test Process New
Fundamental Test Process NewFundamental Test Process New
Fundamental Test Process New
Nikita Knysh
 
Software Testing Foundations Part 2 - Testing in Software Lifecycle
Software Testing Foundations Part 2 - Testing in Software LifecycleSoftware Testing Foundations Part 2 - Testing in Software Lifecycle
Software Testing Foundations Part 2 - Testing in Software Lifecycle
Nikita Knysh
 
Software Testing Foundations Part 5 - White Box Testing
Software Testing Foundations Part 5 - White Box TestingSoftware Testing Foundations Part 5 - White Box Testing
Software Testing Foundations Part 5 - White Box Testing
Nikita Knysh
 
Software Testing Foundations Part 4 - Black Box Testing
Software Testing Foundations Part 4 - Black Box TestingSoftware Testing Foundations Part 4 - Black Box Testing
Software Testing Foundations Part 4 - Black Box Testing
Nikita Knysh
 
Software Testing Foundations Part 7 - Basics of Test Management
Software Testing Foundations Part 7 - Basics of Test ManagementSoftware Testing Foundations Part 7 - Basics of Test Management
Software Testing Foundations Part 7 - Basics of Test Management
Nikita Knysh
 
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
Software Testing Foundations Part 6 - Intuitive and Experience-based testingSoftware Testing Foundations Part 6 - Intuitive and Experience-based testing
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
Nikita Knysh
 

Destaque (16)

Ingeniero Véndete en el Mercado Global
Ingeniero Véndete en el Mercado GlobalIngeniero Véndete en el Mercado Global
Ingeniero Véndete en el Mercado Global
 
Codigo entropía criptográfica (yango colmenares)
Codigo entropía criptográfica  (yango colmenares)Codigo entropía criptográfica  (yango colmenares)
Codigo entropía criptográfica (yango colmenares)
 
Codigo hill claves (yango colmenares)
Codigo hill claves (yango colmenares)Codigo hill claves (yango colmenares)
Codigo hill claves (yango colmenares)
 
רשימת רמת גן נקייה
 רשימת רמת גן נקייה רשימת רמת גן נקייה
רשימת רמת גן נקייה
 
Jgbcfybt ghjub
Jgbcfybt ghjubJgbcfybt ghjub
Jgbcfybt ghjub
 
Andragogia
AndragogiaAndragogia
Andragogia
 
Overview of test process improvement frameworks
Overview of test process improvement frameworksOverview of test process improvement frameworks
Overview of test process improvement frameworks
 
ACC presentation for QA Club Kiev
ACC presentation for QA Club KievACC presentation for QA Club Kiev
ACC presentation for QA Club Kiev
 
Software Testing Foundations Part 8 - Test Tools
Software Testing Foundations Part 8 - Test ToolsSoftware Testing Foundations Part 8 - Test Tools
Software Testing Foundations Part 8 - Test Tools
 
Fundamental Test Process New
Fundamental Test Process NewFundamental Test Process New
Fundamental Test Process New
 
código detección de errores (yango colmenares)
código detección de errores (yango colmenares)código detección de errores (yango colmenares)
código detección de errores (yango colmenares)
 
Software Testing Foundations Part 2 - Testing in Software Lifecycle
Software Testing Foundations Part 2 - Testing in Software LifecycleSoftware Testing Foundations Part 2 - Testing in Software Lifecycle
Software Testing Foundations Part 2 - Testing in Software Lifecycle
 
Software Testing Foundations Part 5 - White Box Testing
Software Testing Foundations Part 5 - White Box TestingSoftware Testing Foundations Part 5 - White Box Testing
Software Testing Foundations Part 5 - White Box Testing
 
Software Testing Foundations Part 4 - Black Box Testing
Software Testing Foundations Part 4 - Black Box TestingSoftware Testing Foundations Part 4 - Black Box Testing
Software Testing Foundations Part 4 - Black Box Testing
 
Software Testing Foundations Part 7 - Basics of Test Management
Software Testing Foundations Part 7 - Basics of Test ManagementSoftware Testing Foundations Part 7 - Basics of Test Management
Software Testing Foundations Part 7 - Basics of Test Management
 
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
Software Testing Foundations Part 6 - Intuitive and Experience-based testingSoftware Testing Foundations Part 6 - Intuitive and Experience-based testing
Software Testing Foundations Part 6 - Intuitive and Experience-based testing
 

Semelhante a Codigo huffman (yango colmenares) (20)

Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxx
 
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxxClase lenguaje c xxxxxx
Clase lenguaje c xxxxxx
 
Tutorial p seint
Tutorial p seintTutorial p seint
Tutorial p seint
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Tutorial p seint
Tutorial p seintTutorial p seint
Tutorial p seint
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
 
Escuela
EscuelaEscuela
Escuela
 
Ii corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_claseIi corte algoritmo_tr_1era_clase
Ii corte algoritmo_tr_1era_clase
 
ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++
ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++
ESTRUCTURAS DE SELECCIÓN SENTENCIAS IF Y SWITCH EN C++
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
Introduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacionIntroduccion allenguajedeprogramacion
Introduccion allenguajedeprogramacion
 
El lenguaje c
El lenguaje cEl lenguaje c
El lenguaje c
 
El lenguaje c
El lenguaje cEl lenguaje c
El lenguaje c
 
Informe 21
Informe 21Informe 21
Informe 21
 
PHP
PHPPHP
PHP
 

Mais de Yango Alexander Colmenares

Mais de Yango Alexander Colmenares (11)

Algoritmo comprensión dct(yango colmenares)
Algoritmo comprensión dct(yango colmenares)Algoritmo comprensión dct(yango colmenares)
Algoritmo comprensión dct(yango colmenares)
 
Algoritmo comprensión lsb(yango colmenares)
Algoritmo comprensión lsb(yango colmenares)Algoritmo comprensión lsb(yango colmenares)
Algoritmo comprensión lsb(yango colmenares)
 
Algoritmo comprensión lzw(yango colmenares)
Algoritmo comprensión lzw(yango colmenares)Algoritmo comprensión lzw(yango colmenares)
Algoritmo comprensión lzw(yango colmenares)
 
codigo comprensión(yango colmenares)
codigo comprensión(yango colmenares)codigo comprensión(yango colmenares)
codigo comprensión(yango colmenares)
 
Actividad #7 codigo detección de errores (yango colmenares)
Actividad #7 codigo detección de errores (yango colmenares)Actividad #7 codigo detección de errores (yango colmenares)
Actividad #7 codigo detección de errores (yango colmenares)
 
Codigo rsa manejo de llaves publicas y privadas (yango colmenares)
Codigo rsa manejo de llaves publicas y privadas (yango colmenares)Codigo rsa manejo de llaves publicas y privadas (yango colmenares)
Codigo rsa manejo de llaves publicas y privadas (yango colmenares)
 
Criterios de Excelencia en Redes de Internet
Criterios de Excelencia en Redes de InternetCriterios de Excelencia en Redes de Internet
Criterios de Excelencia en Redes de Internet
 
Iso 27001 2013
Iso 27001 2013Iso 27001 2013
Iso 27001 2013
 
Itil v3 & 27001
Itil v3 & 27001Itil v3 & 27001
Itil v3 & 27001
 
Valores corporativos
Valores corporativosValores corporativos
Valores corporativos
 
Equidad y genero
Equidad y generoEquidad y genero
Equidad y genero
 

Último

La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 

Último (20)

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 

Codigo huffman (yango colmenares)

  • 1. Instituto Politécnico Nacional Introducción a los Sistemas de Comunicación Seguros Unidad MISTI Culhuacan Presentado a: Dr. Gualberto Aguilar Torres Tarea Sistemas Huffman 9 Por: Yango Alexander Colmenares Fecha Octubre de 2013 %% INSTITUTO POLITECNICO NACIONAL-MISTI CULHUACAN --- MEXICO DF 2013 %%Desarrollado por:Yango Colmenares %Presentado a : Dr. Gualberto Aguilar Torres %Programación en Matlab %Codigo Huffman clc; clear all; close all; % Aqui se lee el archivo .txt fileID = fopen('pruebaProba.txt'); % Se utiliza el comando fscanf para analizar el contenido del archivo texto = fscanf(fileID,'%c'); % Se convierte el texto a minusculas texto = lower(texto); % En la siguiente variable obtenemos el total de letras del texto aunque % se repitan, contanto espacios en blanco, simbolos, etc. totalLetras = length(texto); % Algoritmo para quitar acentos a vocales for j=1:length(texto) if strcmp(texto(j),'á') texto(j)='a'; elseif strcmp(texto(j),'é') texto(j)='e'; elseif strcmp(texto(j),'í') texto(j)='i'; elseif strcmp(texto(j),'ó') texto(j)='o'; elseif strcmp(texto(j),'ú') texto(j)='u'; end
  • 2. end clear j; % El comando control de flujo del texto 'ENTER' lo cambiamos por un espacio % en blanco for j=1:length(texto) if isstrprop(texto(j), 'cntrl') texto(j)=' '; end end clear j; % Inicializamos la variable palabras Solas que contendra las palabra del % texto sin repetirse letrasSolas(1) = texto(1); % Algoritmo que nos ayuda a encontrar las palabras sin repetirse del texto % para irlas guardando en el vector palabrasSolas indicador = 0; for j=1:length(texto) for i=1:length(letrasSolas) % Para comparar cadenas: strcmp(cadena1, cadena2); if strcmp(letrasSolas(i),texto(j)) indicador = 1; end end if indicador ~= 1 letrasSolas(i+1) = texto(j); end indicador = 0; end clear j i indicador; % El siguiente algoritmo nos ayuda a contar el numero de palabras que se % repiten dentro del texto cargado contadorLetras = zeros(1,length(letrasSolas)); for j=1:length(letrasSolas) for i=1:length(texto) if strcmp(letrasSolas(j),texto(i)) contadorLetras(j) = contadorLetras(j) + 1; end end end clear j i; % Histograma de las palabras encontradas dentro del texto mostrando la % frecuencia de ellas % bar(contadorLetras); % El siguiente codigo obtiene la probabilidad de cada palabra probaLetras = zeros(1,length(letrasSolas)); for j=1:length(letrasSolas) probaLetras(j) = contadorLetras(j)/totalLetras;
  • 3. end clear j; % Hasta aqui se termino de analizar el texto y se puede ahora proseguir con % la codificacion Huffman %% Algoritmo de Huffman % La variable letrasSolas las pasamos a celdas for i=1:length(letrasSolas) letrasSolasCell{i,1} = letrasSolas(i); probaLetrasCell{i,1} = probaLetras(i); codigosLetrasCell{i,1} = ''; end clear i; % Las siguientes variables nos ayudaran a realizar el algoritmo de huffman letrasSolasCellSort = letrasSolasCell; probaLetrasCellSort = probaLetrasCell; % Acomodamos las probabilidades de forma descendiente for j=1:length(probaLetrasCellSort) for i=1:length(probaLetrasCellSort)-1 if probaLetrasCellSort{i} < probaLetrasCellSort{i+1} aux = probaLetrasCellSort{i}; aux1 = letrasSolasCellSort{i}; probaLetrasCellSort{i} = probaLetrasCellSort{i+1}; letrasSolasCellSort{i} = letrasSolasCellSort{i+1}; probaLetrasCellSort{i+1} = aux; letrasSolasCellSort{i+1} = aux1; end end end clear j i aux aux1; tope = length(letrasSolasCellSort); for i=1:length(letrasSolasCellSort)-2 for j=1:tope-1 if j == tope-1 probaLetrasCellSort{j,i+1} = probaLetrasCellSort{j,i}+probaLetrasCellSort{j+1,i}; sumasHuffman{i,1} = probaLetrasCellSort{j,i+1}; else probaLetrasCellSort{j,i+1} = probaLetrasCellSort{j,i}; end end for k=1:tope-1 for l=1:tope-2
  • 4. if probaLetrasCellSort{l,i+1} < probaLetrasCellSort{l+1,i+1} aux = probaLetrasCellSort{l,i+1}; probaLetrasCellSort{l,i+1} = probaLetrasCellSort{l+1,i+1}; probaLetrasCellSort{l+1,i+1} = aux; end end end tope = tope-1; end clear tope i j k l aux; probaCopiaSort = probaLetrasCellSort; tope = length(letrasSolasCellSort); for i=1:length(letrasSolasCellSort) indexLetrasSolas{i,1} = i; end clear i; % Esta variable indicara hasta cuando se dejara de borrar las celdas para una % mejor busqueda del código indicador = 0; indPos = 0; for j=1:length(letrasSolasCell) for i=1:length(letrasSolasCell)-2 if j == 1 aux = indexLetrasSolas{j,i}; aux1 = probaLetrasCellSort{aux,i}; if (aux == tope) || (aux == tope-1) for k=tope-1:-1:1 if sumasHuffman{i} == probaLetrasCellSort{k,i+1} indexLetrasSolas{j,i+1} = k; indicador = indicador + 1; break; end end else for k=aux:tope-1 if indicador == 0 if aux1 == probaLetrasCellSort{k,i+1} indexLetrasSolas{j,i+1} = k; probaLetrasCellSort{aux,i} = 0; break;
  • 5. end else if aux1 == probaLetrasCellSort{k,i+1} indexLetrasSolas{j,i+1} = k; break; end end end end tope = tope-1; else aux = indexLetrasSolas{j,i}; aux1 = probaLetrasCellSort{aux,i}; if (aux == tope) || (aux == tope-1) for k=tope-1:-1:1 if sumasHuffman{i} == probaLetrasCellSort{k,i+1} indexLetrasSolas{j,i+1} = k; indicador = indicador + 1; break; end end else for k=aux:tope-1 if indicador == 0 if aux1 == probaLetrasCellSort{k,i+1} if k == indexLetrasSolas{j-1,i+1} indexLetrasSolas{j,i+1} = k+1; probaLetrasCellSort{aux,i} = 0; break; else indexLetrasSolas{j,i+1} = k; probaLetrasCellSort{aux,i} = 0; break; end end else if aux1 == probaLetrasCellSort{k,i+1} indexLetrasSolas{j,i+1} = k; break; end end
  • 6. end end tope = tope-1; end end indicador = 0; tope = length(letrasSolasCellSort); end tope = length(letrasSolasCellSort); for j=1:length(letrasSolasCell) for i=1:length(letrasSolasCell)-1 if indexLetrasSolas{j,i} == tope codigosLetrasCell{j} = strcat(codigosLetrasCell{j},'1'); elseif indexLetrasSolas{j,i} == tope-1 codigosLetrasCell{j} = strcat(codigosLetrasCell{j},'0'); end tope = tope - 1; end tope = length(letrasSolasCellSort); end % Creamos una tabla que servira de muestra para visualizar las % codificaciones for i=1:length(letrasSolasCell) tabla{i,1} = letrasSolasCellSort{i,1}; end for i=1:length(letrasSolasCell) tabla{i,2} = probaCopiaSort{i,1}; end for i=1:length(letrasSolasCell) tabla{i,3} = codigosLetrasCell{i,1}; end % Analisis del codigo y verificacion del sistema Huffman % Crea la variable codificacion que contendra todo el texto codificado for j=1:length(letrasSolasCellSort) if strcmp(texto(1),letrasSolasCellSort{j}) codificacion = codigosLetrasCell{j}; end end % Codificar el texto analizado for i=2:length(texto) for j=1:length(letrasSolasCellSort) if strcmp(texto(i),letrasSolasCellSort{j}) codificacion = strcat(codificacion,codigosLetrasCell{j});
  • 7. end end end % Copiamos la codificacion tal y como nos la entrega el algoritmo anterior % como copia segura codificacion1 = codificacion; % El siguiente algoritmo agrega '0's a la derecha para despues poderlo % organizar en grupos de 8 tipo modulos if mod(length(codificacion),8) ~= 0 for j=length(codificacion):length(codificacion)+7- mod(length(codificacion),8) codificacion(j+1) = '0'; end end % % Agrupar codificacion en grupos de 8 bits i=1; for j=1:floor(length(codificacion)/8) grupos8Bits{j} = codificacion(i:i+7); i=i+8; end % % Agrupar codificacion en grupos de 4 bits i=1; for j=1:floor(length(codificacion)/4) grupos4Bits{j} = codificacion(i:i+3); i=i+4; end % % Algoritmo que pasa la codificacion a Hexadecimal if strcmp(grupos4Bits{1},'0000') codificacionHex = '0'; elseif strcmp(grupos4Bits{1},'0001') codificacionHex = '1'; elseif strcmp(grupos4Bits{1},'0010') codificacionHex = '2'; elseif strcmp(grupos4Bits{1},'0011') codificacionHex = '3'; elseif strcmp(grupos4Bits{1},'0100') codificacionHex = '4'; elseif strcmp(grupos4Bits{1},'0101') codificacionHex = '5'; elseif strcmp(grupos4Bits{1},'0110') codificacionHex = '6'; elseif strcmp(grupos4Bits{1},'0111') codificacionHex = '7'; elseif strcmp(grupos4Bits{1},'1000') codificacionHex = '8'; elseif strcmp(grupos4Bits{1},'1001') codificacionHex = '9'; elseif strcmp(grupos4Bits{1},'1010') codificacionHex = 'A'; elseif strcmp(grupos4Bits{1},'1011')
  • 8. codificacionHex = 'B'; elseif strcmp(grupos4Bits{1},'1100') codificacionHex = 'C'; elseif strcmp(grupos4Bits{1},'1101') codificacionHex = 'D'; elseif strcmp(grupos4Bits{1},'1110') codificacionHex = 'E'; elseif strcmp(grupos4Bits{1},'1111') codificacionHex = 'F'; end for j=2:length(grupos4Bits) if strcmp(grupos4Bits{j},'0000') codificacionHex = strcat(codificacionHex,'0'); elseif strcmp(grupos4Bits{j},'0001') codificacionHex = strcat(codificacionHex,'1'); elseif strcmp(grupos4Bits{j},'0010') codificacionHex = strcat(codificacionHex,'2'); elseif strcmp(grupos4Bits{j},'0011') codificacionHex = strcat(codificacionHex,'3'); elseif strcmp(grupos4Bits{j},'0100') codificacionHex = strcat(codificacionHex,'4'); elseif strcmp(grupos4Bits{j},'0101') codificacionHex = strcat(codificacionHex,'5'); elseif strcmp(grupos4Bits{j},'0110') codificacionHex = strcat(codificacionHex,'6'); elseif strcmp(grupos4Bits{j},'0111') codificacionHex = strcat(codificacionHex,'7'); elseif strcmp(grupos4Bits{j},'1000') codificacionHex = strcat(codificacionHex,'8'); elseif strcmp(grupos4Bits{j},'1001') codificacionHex = strcat(codificacionHex,'9'); elseif strcmp(grupos4Bits{j},'1010') codificacionHex = strcat(codificacionHex,'A'); elseif strcmp(grupos4Bits{j},'1011') codificacionHex = strcat(codificacionHex,'B'); elseif strcmp(grupos4Bits{j},'1100') codificacionHex = strcat(codificacionHex,'C'); elseif strcmp(grupos4Bits{j},'1101') codificacionHex = strcat(codificacionHex,'D'); elseif strcmp(grupos4Bits{j},'1110') codificacionHex = strcat(codificacionHex,'E'); elseif strcmp(grupos4Bits{j},'1111') codificacionHex = strcat(codificacionHex,'F'); end end %Se resuelve el codigo expresando la funcionalidad segun el texto marcado fclose(fileID); clear ans;