《信息论与编码》实验报告
一、 实验目的
熟悉算术编码的编、解码过程。 二、 实验原理
输入序列的二进制表示加上适当的截短。 三、 实验内容
设离散无记忆信源的概率空间为
a1X1p(X)=2a214a318a41, 8信源输出符号序列为{a3四、 实验算法步骤
a2a1a2},用程序实现算术编码、解码过程。
1、计算累计概率Pr[i],另开辟2个存储空间C(存储码字)、A(存储区间长度) 2、对所有信源符号执行以下迭代:
a)C=C+A*Pr[i],i为当前符号在Pr[]数组所对应的下标; b)A=A*p[i],i为当前符号在p[]数组所对应的下标; c)求码字位数cnum=ceil(-lb(A))
d)将C转换为二进制小数,取小数后cnum位,作为码字输出。 3、解码
a)将收到的二进制码字转为十进制,根据累计概率,判断其落在哪个区间,判断码字。
b)执行c=c-Pr[i],i为当前符号在Pr[]数组所对应的下标; c)c=c/p[i], i为当前符号在p[]数组所对应的下标 d)解码未完成,回到a)。 e)输出解码所得符号序列。
五、 核心代码:
编码过程
将Ci用(-lb(Ai))=8位二进制数表示,并且取小数点后面cnum位作为输出码字。 译码过程:
六、实验结果:
因篇幅问题不能全部显示,请点此查看更多更全内容