算术编码(2)

2019-03-27 23:37

{

Ft=Fs; Pt=Ps;

Ft+=Pt*f[j];//对进行逆编码 Pt*=P[j]; }

void main() {

}

if(gFs>=Ft)//对其进行判断,并且将值存入到数组A中 { }

Fs=Ft; Ps=Pt; cout<

}

cout<

cout<<\输入所要编码的符号的个数,并按回车跳转:\int a,i,h=0; cin>>a;

cout<<\请输入符号及其相对应的概率值,并按回车跳转:\for(i=0;i

char x; float y;

cin>>x;

A[i]=x;//将字符依次存入数组A中

cin>>y;

P[i]=y;//将字符所对应的概率依次存入到数组P中

}

for(i=1;i

f[0]=0;

f[i]=f[i-1]+P[i-1];//将要编码的数据映射到一个位于[0,1)的实数区间中

cout<<\请输入所要编码的符号序列,并以*结尾:\ while(1)//这个while语句的作用是将要编码的字符存入到数组S中 { char ss; cin>>ss; if(ss=='*')break;//在以“*”为结尾的时候结束存储 S[h++]=ss; }

}

cout<<\输入的字符经过算术编码之后为:\cout<<\由上述所对应的解码为:\jiema(a,h);

bianma(a,h);

七、实验结果:

八、结果分析

首先根据显示输入所有的字符的个数,以及字符和其概率,经过对“CADACDB”编码之后,我们可以在屏幕上看到最终的编码结果为0.514388,与上式的分析结果相同,进过转换之后产生的二进制代码为10000011101011110。同样也显示了译码结果和输入的相同,即同为“CADACDB”。证明实验编码是可行的。

九、心得体会

这是第二次的信息论实验,借助上周编写的哈夫曼编码的知识和经验,以及在网络上的相关查阅,我也成功的做好了算术编码及其译码的实验,通过这个实验,让我对算术编码有了更进一步的了解,以及对C++的运用,因为我们之前都是使用C语言进行编写程序,对于知识有了新的吸收。受益匪浅啊。


算术编码(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DJ部管理资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: