赫夫曼编码是我们经常使用的一种类型编码,它是一种即时码,有很多优点,下面我们使用matlab语言来实现huffman编码的过程。
首先,我们输入一组概率,这里以[0.512 0.128 0.128 0.032 0.128 0.032 0.032 0.008]为例。
P=[0.512 0.128 0.128 0.032 0.128 0.032 0.032 0.008];%输入
l=length(P);
n=2*l-1;%节点总个数
1
2
3
1
2
3
并计算需要的节点数。
接着我们定义编码结果元胞,来记录一些信息。
cell=zeros(n,5);%节点,有编号、概率、分配的码元、组成1、组成2.
1
1
接着初始化元胞
for i=1:l
cell(i,:)=[i,P(i),3,0,0];%3,0,0是坏值
end
for i=l+1:n
cell(i,:)=[i,0,3,0,0];
end
1
2
3
4
5
6
1
2
3
4
5
6
上面的cell元胞是最终结果,而参与运算的是当前运算元胞,不是cell,我们来定义当前运算元胞