Escolar Documentos
Profissional Documentos
Cultura Documentos
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 = ');
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
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
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]