模拟算术编码

本文介绍了算术编码的基本概念和工作原理,包括编码过程和解码过程。通过示例详细解析了对字符串'state tree'进行算术编码的步骤,展示了如何根据符号的概率分布对[0, 1)区间进行分割,最终得到高效编码的表示。在模拟过程中,注意到double类型精度不足可能带来的误差问题。" 112837466,10541114,原生JS封装后代选择器,"['js原生后代选择器', 'JavaScript', 'DOM操作']
摘要由CSDN通过智能技术生成

算术编码wiki简介http://zh.wikipedia.org/wiki/%E7%AE%97%E6%9C%AF%E7%BC%96%E7%A0%81

具体做法的步骤我在网上找到个很不错的PPT

这里也放上来


   用算术编码方法是将被编码的一个消息或一个符号串(序列)表示成0和1之间的一个间隔,即对一串符号直接编码成[0,1)区间上的一个浮点小数,在传输任何符号串(消息)之前,设符号串的完整范围为[0,1)。当一个符号被处理时,这一范围就依据分配给这一符号的那一范围变窄,间隔变小,当符号串序列越长,则编码表示它的间隔越小,同时表示这一间隔所需的位数就越多,直到完成对所有符号串的编码。算术编码的过程,实际上就是依据信息源符号串的发生概率对码区间分割的过程。 

 编码过程

  假如要对有10个符号的信息源发出的字符串“state tree”进行编码,符号串具有如下的概率分布如图所示。


 按每个符号出现的概率对[0,1)区间进行划分,显然每个符号都有一对应的子区间,这里所用的10个字符被分配的范围如图 所示。


  按对‘state  stree”’的算术编码过程为:
    (1)初始化时,被分割的范围 range=high-low=[0,1) = 1 - 0 = 1,下一个范围的低、高端分别由下式计算:
        low=low+range×range low
        high=low+range×range high   
     其中等号右边的low为上一个被编码字符的范围低值;range low和range high分别为本次被编符号已给定出现的概率范围的low和high

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值