Вы находитесь на странице: 1из 11

SISTEMAS DE CODIFICACIN

Huere Hurtado Franchesco 20080083J Alanya veli kevin 20080136F Malca Cruzado Jhonny 20080091B

Sistemas de codificacin
La codificacin de caracteres es el mtodo que permite convertir un carcter de un lenguaje natural (alfabeto o silabario) en un smbolo de otro sistema de representacin, como un nmero o una secuencia de pulsos elctricos en un sistema electrnico, aplicando normas o reglas de codificacin.

Programacin
Elaborar un programa de Matlab para codificar y decodificar un mensaje de longitud arbitraria: a) con el cdigo aritmtico y aritmtica entera b) con un cdigo de Tunstall c) con un diccionario esttico d) con un diccionario dinmico (algoritmo LZW)

%------Cdigo Aritmetico----------------%

Codificacin aritmtica

clear all;clc
S=input('Ingrese el Conjunto de simbolos de la Fuente = '); F=input('Ingrese el Conjunto de Frecuencias = ');

men=input('ingrese el mensaje = '); disp('El mensaje codificado es:')

codmen = arithenco(men,F)
disp('El mensaje decodificado es:') decodmen = arithdeco(codmen,F,length(men))

Ingrese el Conjunto de simbolos de la Fuente = [1 2 3] Ingrese el Conjunto de Frecuencias = [20 45 35] ingrese el mensaje = [2 3 1 2 3] El mensaje codificado es:

codmen =
1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1

El mensaje decodificado es: decodmen = 2 3 1 2 3

Diccionario esttico
fprintf('DICCIONARIO ESTTICO \n \n') fprintf('Los elementos del alfabeto son:\n'); fprintf('l = 000 \na = 001 \nb = 010 \no = 011 \nr = 100 \nt = 101 \ni = 110 \n2 = 111 \n \n'); mens = input('Ingrese el mensaje a codificar(como vector: [m1 m2 m3 ...]):'); codmens = []; for i=1:length(mens) switch mens(i) case 'l' codmens = [codmens 0 0 0]; case 'a' codmens = [codmens 0 0 1]; case 'b' codmens = [codmens 0 1 0]; case 'o' codmens = [codmens 0 1 1]; case 'r' codmens = [codmens 1 0 0]; case 't' codmens = [codmens 1 0 1]; case 'i' codmens = [codmens 1 1 0]; case 3' codmens = [codmens 1 1 1]; end end

fprintf('\nEl cdigo es:') codmens cod = input('\nIngrese el mensaje a decodificar(como vector: [c1 c2 c3 ...] o codmens): '); decomens = []; for i=1:3:length(cod) if isequal(cod(i:i+2),[0 0 0]) decomens = [decomens 'l']; elseif isequal(cod(i:i+2),[0 0 1]) decomens = [decomens 'a']; elseif isequal(cod(i:i+2),[0 1 0]) decomens = [decomens 'b']; elseif isequal(cod(i:i+2),[0 1 1]) decomens = [decomens 'o']; elseif isequal(cod(i:i+2),[1 0 0]) decomens = [decomens 'r']; elseif isequal(cod(i:i+2),[1 0 1]) decomens = [decomens 't']; elseif isequal(cod(i:i+2),[1 1 0]) decomens = [decomens 'i']; elseif isequal(cod(i:i+2),[1 1 1]) decomens = [decomens 3']; end end fprintf('\nEl mensaje decodificado es:') decomens

DICCIONARIO ESTTICO Los elementos del alfabeto son: l = 000 a = 001 b = 010 o = 011 r = 100 t = 101 i = 110 3 = 111 Ingrese el mensaje a codificar(como vector: [m1 m2 m3 ...]):['laboratorio3'] El cdigo es: codmens = 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 1 1 Ingrese el mensaje a decodificar(como vector: [c1 c2 c3 ...] o codmens): codmens El mensaje decodificado es: decomens = laboratorio

fprintf('DICCIONARIO DINMICO\n') syms a b c d r; dicc={1 a;2 b;3 c;4 d;5 r}; t=5; fprintf('\nLos elementos del alfabeto son:\n'); fprintf('\na(1) = a\na(2) = b\na(3) = c\na(4) = d\na(5) = r \n'); mens = input('\nIngrese el mensaje a codificar(como vector: [m1 m2 m3 ...]): '); codmens=[];i=1; enc=1; acabo=0; while i<=length(mens) nummens=0; while enc==1 if(i+nummens>length(mens)) acabo=1; break; end nummens=nummens+1; enc=0; for j=1:t if length(dicc{j,2})==nummens if isequal(mens(i:i+nummens-1),dicc{j,2}) enc=1; temp=[i dicc{j,1}]; end end end end

Diccionario dinmico

codmens=[codmens temp(1,2)]; if acabo==1 break end t=t+1; dicc{t,1}=t; dicc{t,2}=mens(i:i+nummens-1); i=i+nummens-1; enc=1; end fprintf('\nEl nuevo diccionario es:\n') for i=1:t fprintf('%i\t| ',dicc{i,1}),disp(dicc{i,2}) end fprintf('\nEl cdigo es:') codmens cod = input('\nIngrese el mensaje a decodificar(como vector: [c1 c2 c3 ...] o [codmens]):\n'); decomens = []; for i=1:length(cod) for j=1:t if cod(i)==dicc{j,1} decomens=[decomens dicc{j,2}]; end end end fprintf('\nEl mensaje decodificado es:') decomens

DICCIONARIO DINMICO Los elementos del alfabeto son: a(1) = a a(2) = b a(3) = d a(4) = u a(5) = y Ingrese el mensaje a codificar(como vector: [m1 m2 m3 ...]): ['yabadabadu'] El nuevo diccionario es: 1 | a 2 3 4 5 6 | b | d | u | y | ya

7 8 9 10 11 12

| | | | | |

ab ba ad da aba adu

El cdigo es: codmens = 5 1 2 1 3 7 9 4

Ingrese el mensaje a decodificar(como vector: [c1 c2 c3 ...] o [codmens]): codmens El mensaje decodificado es: decomens = [ y, a, b, a, d, a, b, a, d, u]