您好,欢迎访问三七文档
桂林电子科技大学数学与计算科学学院实验报告实验室:06410实验日期:年月日院(系)学号姓名成绩课程名称信息与编码实验项目名称信源剩余度的计算一,实验目的熟练掌握信源熵的概念、信源剩余度的概念、熟练掌握C语言中文件操作与指针操作。二,实验原理信源熵的运算规则三,实验内容自己生成一个英文文件,可以在网上找,也可以自己生成。为了保证实验数据的可靠性,数据的量要比较大。为了保证二维信源统计的可靠性,建议文件的英文字符在十万以上。1、编写一维信源统计程序,得出一维统计频次,计算信源熵及剩余度。2、编写一维信源统计程序,得出二维统计频次,计算信源熵及剩余度。四,实验过程原始记录(数据,图表,计算等)代码:#includestdio.h#includemath.h#includestdlib.h#defineNULL0intcharge(charc){intn;if(c=65&&c=90)c=c+32;if(c+97&&c=122){n=c-97;returnn;}elsereturn-1;}voidmain(){intcount[26][26]={0};charzifu1,zifu2;inti,n,m,j;intsum=0;floatq,sum1=0;FILE*fp;If((fp=fopen(“file”,“rb”))==NULL){printf(“can’topenfile!\n”);exit(0);}while(!feof(fp)){zifu1=fgetc(fp);n=charge(zifu1);if(n!=-1){zifu2=fgetc(fp);m=charge(zifu2);if(m!=-1){count[n][m]++;fseek(fp,-1,1);}}}fclose(fp);for(i=0;i26;i++)for(j=0;j26;j++)sum=sum+count[i][j];printf(“thenumberofallthecodeis%d\n”,sum);q=(float)sum;for(i=0;i26;i++)for(j=0;j26;j++){if(j%3==0)printf(“\n”);printf(“%c%c,%4d,%6.5f%%”,i+97,j+97,count[i][j],count[i][j]*100/q);}printf(“\n”);for(i=0;i26;i++)for(j=0;j26;j++)if(count[i][j])sum1=sum1+(float)((count[i][j]/q)*log10(1/(double)(count[i][j]/q))/log10((double)(2)));printf(“\n信息熵为:H(x)=%f\n”,sum1);}五,实验结果分析或总结经过这次实验,学会了信源剩余度的计算。
本文标题:信源剩余度的计算
链接地址:https://www.777doc.com/doc-2714708 .html