viernes, 28 de octubre de 2011

Codificación DC Huffman

x=input ('Valor a codificar DC:  ');%Valor DC
b=[0 1 11 111 1111 11111 111111 1111111 11111111 111111111 1111111111 11111111111];

if abs(x)==0
    y='00'; 
elseif abs(x)==1
    y='010';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(2));
        z=s1-s;
        num=num2str(z(1));
    else
        num=dec2bin(x);
    end
elseif abs(x)<4
    y='011';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(3));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2))];
    else
        num=dec2bin(x);
    end
elseif  abs(x)<8
    y='100';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(4));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3))];
    else
        num=dec2bin(x);
    end
elseif  abs(x)<16
    y='101';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(5));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4))];
    else
        num=dec2bin(x);
    end
elseif abs(x)<32
    y='110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(6));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5))];
    else
        num=dec2bin(x);
    end
elseif  abs(x)<64
    y='1110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(7));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6))];
    else
        num=dec2bin(x);
    end
elseif  abs(x)<128
    y='11110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(8));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6)),num2str(z(7))];
    else
        num=dec2bin(x);
    end
elseif abs(x)<256
    y='111110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(9));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6)),num2str(z(7)),num2str(z(8))];
    else
        num=dec2bin(x);
    end
elseif abs(x)<=512
    y='1111110';
     if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(10));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6)),num2str(z(7)),num2str(z(8)),num2str(z(9))];
    else
        num=dec2bin(x);
    end
   
elseif abs(x)<=1024
    y='11111110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(11));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6)),num2str(z(7)),num2str(z(8)),num2str(z(9)),num2str(z(10))];
    else
        num=dec2bin(x);
    end
elseif abs(x) <=2040
    y='111111110';
    if x<0
        s=dec2bin(abs(x));
        s1=num2str(b(12));
        z=s(1)-s;
        num=[num2str(z(1)),num2str(z(2)),num2str(z(3)),num2str(z(4)),num2str(z(5)),num2str(z(6)),num2str(z(7)),num2str(z(8)),num2str(z(9)),num2str(z(10)),num2str(z(10))];
    else
        num=dec2bin(x);
    end
end
cat=y
num
if x==0
CofDC=cat
else
CofDC=[cat,num]
end

No hay comentarios:

Publicar un comentario