信息论课程设计:①算术编码&译码

本文介绍了信息论课程设计中算术编码和译码的方法。算术编码是一种无损数据压缩技术,通过计算输入消息的概率并将其编码为小数。编码过程包括计算概率、编码长度、算术概率,并将其转化为二进制。译码则是编码的逆过程,通过比较和累计概率来还原原始序列。文章提供了C++参考代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、算术编码简介

算术编码是图像压缩的主要算法之一。
是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。

二、编码方法

现在以“00111001111100”为例

  • 步骤一:分别获取0和1的个数设为count_a,count_b
  • 步骤二:获取0和1的概率,设为pa,pb
  • 步骤三:计算字符串概率P

P=(pow(pa, count_a) * pow(pb, count_b));

  • 步骤四:计算编码长度L

L = ceil(log(1 / P) / log(2));

  • 步骤五:计算算术概率F
    公式:F( s r ) = F( s )+P( s ) * F( r )
    例如:F(00111001111100)=F(0011100111110)+P(0011100111110)*F(0)

注:这里是通过递归得出最后的结果,结果即为算术概率

  • F(s)函数:指字符串的累计概率和,初始F(0)=0,F(1)=pa
  • P(s)函数&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值