霍(哈)夫曼编码matlab实现/算数编码

1.原创:http://blog.csdn.net/tengweitw/article/details/45478497
哈夫曼树又称最优二叉树。
2.算术编码方法是将被编码的一则消息或符号串(序列)表示成0和1之间的一个间隔
参考:http://blog.sina.com.cn/s/blog_4a8f0cbc01000b6e.html

function [ output_args ] = encoding( pr,a,b,c)

m=length(pr);
 temp=[0.0,0.0,0.0,0.0];
for i=1:m
    temp(i+1)=temp(i)+pr(i);
end

orignal=temp;
in=input('Inptu a string of abc!!!');
n=length(in);

for i=1:n
    width=temp(4)-temp(1);  
    w=temp(1);
    switch in(i)
        case a
            m=1;
        case b
            m=2;
        case c
            m=3;
        otherwise
            error('do not input other character!');
    end
    temp(1)=w+orignal(m)*width;
    temp(4)=w+orignal(m+1)*width;
    left=temp(1);
    right=temp(4);
    fprintf('left=%.6f\n',left);
    fprintf('right=%.6f\n',right);
end
end

你可能感兴趣的:(霍(哈)夫曼编码matlab实现/算数编码)