输入文件:in3.txt
说明:第一行表示信源符号个数;第二行表示第一个信源符号及其概率,下一行表示第二个信源符号及其概率(若不止两个信源符号也可写入输入文件)。接下来为待编码的码符号序列,每一组以“$”符号结尾。
输出文件:out3.txt
结果分析:对每一组码符号序列输出算术编码的结果,包括累积分布函数和码字,再对该码字进行算术译码,得到原符号序列(观察是否与原来的一致)。因为符号序列在这里较短,压缩的效果不够明显。
5. 设计体会
在课程学习时对于算术编码没有去详细地了解它的编码方法以及实现,在做这个实验的时候,通过一点点地去看去设计,终于对算术编码有了深入的了解。算术编码的设计更多的用到数学计算,通过实现累计分布函数和信源符号序列所对应区间宽度即可完成算术编码的核心部分,依据书上给出的递推公式,实现难度不是很大,得到累积分布函数后还要依据计算出的长度l取其小数点后l位,还要考虑进位的问题。有了编码的铺垫,译码则显得容易的多,进行逆编码即可。在设计的过程中,可以发现算术编码效率很高,编译码的速度也很快。