欢迎来到天天文库
浏览记录
ID:50811159
大小:56.50 KB
页数:7页
时间:2020-03-14
《香农编码课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、信息论与编码课程设计实验报告课程题目:香农编码姓名:叶显权学号:311008000927班级:电信10-03班指导老师:成凌飞学院:电气工程与自动化学院日期:2013年3月28日一.设计任务与要求熟悉运用香农编码,并能通过C语言进行编程,对任意输入消息概率,利用香农编码方法进行编码,并计算信源熵和编码效率。二.实验原理原理:编码的目的是为了优化通信系统。香农编码属于不等长编码,通常将经常出现的消息编成短码,不常出现的消息编成长码。从而提高通信效率。香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编码使平均码长达到极限值,
2、这是一个很重要的极限定理。香农第一定理指出,选择每个码字的长度Ki满足下式:-log2p(xi)≤Ki<1-log2p(xi)就可以得到这种码。这种编码方法称为香农编码。二进制香农码的编码步骤如下:⑴将信源符号按概率从大到小的顺序排列, p(a1)≥p(a2)≥…≥p(an)⑵确定满足下列不等式的整数Ki,-log2p(ai)≤Ki<1-log2p(ai)⑶令p(a1)=0,用Pi表示第i个码字的累加概率,⑷将Pi用二进制表示,并取小数点后Ki位作为符号ai的编码三.设计思路二进制香农编码的步骤如下:(1)、将信源符号按概率从大到
3、小的顺序排列(2)、对第j个前的概率进行累加得到pa(aj)(3)、由-logp(ai)ki<1-logp(ai)求得码字长度ki(4)、将pa(aj)用二进制表示,并取小数点后ki位作为符号ai的编码。四.设计流程图输入符号概率十进制小数转 换成二进制输出函数求前J个的累加和求码长Ki将信源符号概率 从大到小排序五.程序及结果香农编码源程序#include#include#include#includeclassT{public:T(){}~T();vo
4、idCreate();voidCoutpxj();voidCoutk();voidCoutz();voidPrint();protected:intn;double*p;double*pxj;int*k;double*mz;};voidT::Create(){cout<<"请输入信源符号个数:";cin>>n;p=newdouble[n];cout<<"请分别输入这"<>p[i];pxj=newdouble[n];k=newint[n];mz=newdouble[n
5、];doublesum=0.0;for(i=0;i6、j0)k[i]=(int)d+1;elsek[i]=(int)d;}}voidT::Print(){cout<<"Xi"<7、setw(8)<=0){cout<<1;mz[i]=2*mz[i]-1;}else{cout<<0;mz[i]=2*mz[i];}}cout<8、i]*(log10(p[i])/log10(2.0));}Y=H/K;cout<<"平均码长:"<
6、j0)k[i]=(int)d+1;elsek[i]=(int)d;}}voidT::Print(){cout<<"Xi"<7、setw(8)<=0){cout<<1;mz[i]=2*mz[i]-1;}else{cout<<0;mz[i]=2*mz[i];}}cout<8、i]*(log10(p[i])/log10(2.0));}Y=H/K;cout<<"平均码长:"<
7、setw(8)<=0){cout<<1;mz[i]=2*mz[i]-1;}else{cout<<0;mz[i]=2*mz[i];}}cout<8、i]*(log10(p[i])/log10(2.0));}Y=H/K;cout<<"平均码长:"<
8、i]*(log10(p[i])/log10(2.0));}Y=H/K;cout<<"平均码长:"<
此文档下载收益归作者所有