ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:275KB ,
资源ID:437162      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/437162.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(算术编码.doc)为本站上传会员【Fis****915】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

算术编码.doc

1、实现算术编码及其译码 一、 实验内容 借助C++编程来实现对算术编码的编码及其译码算法的实现 二、实验环境 1. 计算机 2. VC++6.0 三、实验目的 1. 进一步熟悉算术编码的原理,及其基本的算法; 2. 通过编译,充分对于算术编码有进一步的了解和掌握; 3. 掌握C++语言编程(尤其是数值的进制转换,数值与字符串之间的转换等) 四、实验原理 算术编码   算术编码的基本原理是将编码的消息表示成实数0和1之间的一个间隔,消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。 算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符

2、号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。 给定事件序列的算术编码步骤如下: (1)编码器在开始时将“当前间隔”设置为[0,1)。 (2)对每一事件,编码器按步骤(a)和(b)进行处理 (a)编码器将“当前间隔”分为子间隔,每一个事件一个。 (b)一个子间隔的大小与下一个将出现的事件的概率成比例,编码器选择子间隔对应于下一个确切发生的事件相对应,并使它成为新的“当前间隔”。 (3)最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。 编码过程  假设信源符号为{A, B, C, D

3、},这些符号的概率分别为{ 0.1, 0.4, 0.2,0.3 },根据这些概率可把间隔[0, 1]分成4个子间隔:[0, 0.1], [0.1, 0.5], [0.5, 0.7], [0.7, 1],其中[x,y]表示半开放间隔,即包含x不包含y。上面的信息可综合在表03-04-1中。 下表为信源符号,概率和初始编码间隔 符号 A B C D  概率 0.1 0.4 0.2 0.3  初始编码间隔 [0, 0.1) [0.1, 0.5) [0.5, 0.7) [0.7, 1]  如果二进制消息序列的输入为:C A D A C D B。编码时首先输入的符

4、号是C,找到它的编码范围是[0.5,0.7]。由于消息中第二个符号A的编码范围是[0, 0.1],因此它的间隔就取[0.5, 0.7]的第一个十分之一作为新间隔[0.5,0.52]。依此类推,编码第3个符号D时取新间隔为[0.514, 0.52],编码第4个符号A时,取新间隔为[0.514, 0.5146],…。消息的编码输出可以是最后一个间隔中的任意数。整个编码过程如图03-04-1所示。 编码和译码的全过程分别表示在下表。  编码过程 步骤  输入符号 编码间隔  编码判决 1 C [0.5, 0.7] 符号的间隔范围[0.5, 0.7]  2 A [0.5,

5、 0.52] [0.5, 0.7]间隔的第一个1/10 3 D [0.514,0.52] [0.5, 0.52]间隔的最后一个1/10 4 A [0.514,0.5146] [0.514, 0.52]间隔的第一个1/10 5 C [0.5143, 0.51442] [0.514, 0.5146]间隔的第五个1/10开始,二个1/10 6 D [0.514384, 0.51442] [0.5143, 0.51442]间隔的最后3个1/10 7 B [0.5143836, 0.514402] [0.514384,0.51442]间隔的4个1/10,从

6、第1个1/10开始 8 从[0.5143876, 0.514402]中选择一个数作为输出:0.5143876 译码过程 步骤  间隔 译码符号  译码判决  1 [0.5, 0.7] C 0.51439在间隔 [0.5, 0.7) 2 [0.5, 0.52] A 0.51439在间隔 [0.5, 0.7)的第1个1/10 3 [0.514, 0.52] D 0.51439在间隔[0.5, 0.52)的第7个1/10 4 [0.514, 0.5146] A 0.51439在间隔[0.514, 0.52]的第1个1/10 5 [0.51

7、43, 0.51442] C 0.51439在间隔[0.514, 0.5146]的第5个1/10 6 [0.514384, 0.51442] D 0.51439在间隔[0.5143, 0.51442]的第7个1/10 7 [0.51439, 0.5143948] B 0.51439在间隔[0.51439,0.5143948]的第1个1/10 8 译码的消息:C A D A C D B 五、实验设计: 算术编码是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码。而算术编

8、码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。所以用两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。 算术编码的算法思想如下: (1)对一组信源符号按照符号的概率从大到小排序,将[0,1)设为当前分析区间。按信源符号的概率序列在当前分析区间划分比例间隔。 (2)检索“输入消息序列”,锁定当前消息符号(初次检索的话就是第一个消息符号)。找到当前符号在当前分析区间的比例间隔,将此间隔作为新的当前分析区间。并把当前分析区间的起点(即左端点)指示的数“补加”到编码输出数

9、里。当前消息符号指针后移。 (3)仍然按照信源符号的概率序列在当前分析区间划分比例间隔。然后重复第二步。直到“输入消息序列”检索完毕为止。 (4)最后的编码输出数就是编码好的数据。 六、实验程序: #include #include"math.h" //定义所需要用到的变量及数组 char S[100], A[10]; float P[10],f[10],gFs; //编码程序 void bianma(int a,int h) { int i,j; float fr; float ps=1; float Fs=0; flo

10、at Sp[100],b[100],F[100]; //以待编码的个数和字符个数为循环周期,将待编码的字符所对应的概率存入到Fs中 for(i=0;i

11、 cout<<"Fs="<(int)l)l=(int)l+1; else l=int(l); //将Fs转换成二进制的形式 int d[20]; int m=0; while(l>m) { Fs=2*Fs; if(Fs>1) { Fs=Fs-1; d[m]=1; } else if(Fs<1)d[m]=0; else {d[m]=1;bre

12、ak;} m++; } int z=m;//解决有关算术编码的进位问题,给二进制数加1 if(m>=l) { while(1) { d[m-1]=(d[m-1]+1)%2;//最后位加1 if(d[m-1]==1)break; else m--; } } cout<<"s="; for(int e=0;e

13、 float Ft,Pt; float Fs=0,Ps=1; for(i=0;i-1;j--) { Ft=Fs; Pt=Ps; Ft+=Pt*f[j];//对进行逆编码 Pt*=P[j]; if(gFs>=Ft)//对其进行判断,并且将值存入到数组A中 { Fs=Ft; Ps=Pt; cout<

14、 } } cout<>a; cout<<"请输入符号及其相对应的概率值,并按回车跳转:"<>x; A[i]=x;//将字符依次存入数组A中 cin>>y; P[i]=y;//将字符所对应的概率依次存入到数组P中 } for(i=1;

15、i>ss; if(ss=='*')break;//在以“*”为结尾的时候结束存储 S[h++]=ss; } cout<<"输入的字符经过算术编码之后为:"<

16、a,h); cout<<"由上述所对应的解码为:"<

17、的做好了算术编码及其译码的实验,通过这个实验,让我对算术编码有了更进一步的了解,以及对C++的运用,因为我们之前都是使用C语言进行编写程序,对于知识有了新的吸收。受益匪浅啊。 内容总结 (1)实现算术编码及其译码 实验内容 借助C++编程来实现对算术编码的编码及其译码算法的实现 二、实验环境 计算机 VC++6.0 三、实验目的 进一步熟悉算术编码的原理,及其基本的算法 (2)给定事件序列的算术编码步骤如下: (1)编码器在开始时将“当前间隔”设置为[0,1) (3)上面的信息可综合在表03-04-1中 (4)并把当前分析区间的起点(即左端点)指示的数“补加”到编码输出数里 (5)else l=int(l)

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服