欢迎来到天天文库
浏览记录
ID:19997428
大小:70.50 KB
页数:5页
时间:2018-10-08
《信息论仙农编码实验报告new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、仙农编码实验报告姓名:资雁兵学号:20091616310029班级:信息安全一班一、题目:仙农编码二、实验要求用仙农编码实现对信源的编码三、实验步骤1、将信源符号按概率从大到小的排列,为方便起见,令P(s1)≥p(s2)≥…≥p(sn)2、令p(s0)=0,用pa(sj)表示第i个码字的累加概率,其中j=i+1,则:pa(sj)=p(s0)+…+p(sj-1)3、确定满足下列不等式的整数li,并令li为第i个码字的长度为-logp(si)≤li<1-logp(si)4、将pa(si)和j=i+1用二进制表示,并取小数点后li位作为符号si的编码四、设计函数v
2、oidGetOrder(shannongsn[50],intn)//从大到小排序voidGetCode(shannongsn[50],intn)//获得编码一、程序使用方法二、运行程序,先输入所要编码的个数,然后一次输入一个字符作为信源名,以及一个信源的概率,即可得编码三、源程序#include#include#defineMAX100typedefstruct{floata;//概率floatb;//码长intcode[MAX];//编码数组}xiannong;//结构体voidScanfNode(xiannongxian
3、node[MAX],intn){inti;//输入各个概率for(i=0;ixiannode[i].a){k=xiannode[j].a;xiannode[j].a=xiannode[
4、i].a;xiannode[i].a=k;}}}voidAddOrder(xiannongxiannode[MAX],intn,floatpa[MAX]){//累加到pa[]数组intj;pa[1]=0;for(j=1;j<=n;j++){pa[j+1]=pa[j]+xiannode[j-1].a;printf("%f",pa[j]);}}voidGetOrder(xiannongxiannode[MAX],intn,floatpa[MAX]){inti,k,m;//把小数转换到二进制floatj;for(i=0;i5、og(xiannode[i].a)/log(2.0);xiannode[i].b=j;//printf("%f",xiannode[i].b);m=j;if(m==j)xiannode[i].b=m;elsexiannode[i].b=m+1;}//for(i=1;i<=n;i++){//生成二进制for(k=0;k6、/voidmain(){xiannongxiannode[MAX];floatpa[MAX];intn,i,j;printf("请输入编码的个数");scanf("%d",&n);ScanfNode(xiannode,n);GetNode(xiannode,n);AddOrder(xiannode,n,pa);GetOrder(xiannode,n,pa);/for(i=0;i7、.b);}for(i=1;i<=n;i++){printf("%f",pa[i]);}测试专用/printf("");for(i=0;i
5、og(xiannode[i].a)/log(2.0);xiannode[i].b=j;//printf("%f",xiannode[i].b);m=j;if(m==j)xiannode[i].b=m;elsexiannode[i].b=m+1;}//for(i=1;i<=n;i++){//生成二进制for(k=0;k6、/voidmain(){xiannongxiannode[MAX];floatpa[MAX];intn,i,j;printf("请输入编码的个数");scanf("%d",&n);ScanfNode(xiannode,n);GetNode(xiannode,n);AddOrder(xiannode,n,pa);GetOrder(xiannode,n,pa);/for(i=0;i7、.b);}for(i=1;i<=n;i++){printf("%f",pa[i]);}测试专用/printf("");for(i=0;i
6、/voidmain(){xiannongxiannode[MAX];floatpa[MAX];intn,i,j;printf("请输入编码的个数");scanf("%d",&n);ScanfNode(xiannode,n);GetNode(xiannode,n);AddOrder(xiannode,n,pa);GetOrder(xiannode,n,pa);/for(i=0;i7、.b);}for(i=1;i<=n;i++){printf("%f",pa[i]);}测试专用/printf("");for(i=0;i
7、.b);}for(i=1;i<=n;i++){printf("%f",pa[i]);}测试专用/printf("");for(i=0;i
此文档下载收益归作者所有