信源剩余度的计算java_信源剩余度的计算

41528d3028836879cd698677c3999917.gif信源剩余度的计算

桂林电子科技大学 数学与计算科学学院实验报告 实验室:06410 实验日期:年 月 日 院(系) 学号 姓名 成绩 课程 名称 信息与编码 实验项目 名 称 信源剩余度的计算 一 ,实验目的 熟练掌握信源熵的概念、信源剩余度的概念、熟练掌握C语言中文件操作与指针操作。 二,实验原理 信源熵的运算规则 三,实验内容 自己生成一个英文文件,可以在网上找,也可以自己生成。为了保证实验数据的可靠性,数据的量要比较大。为了保证二维信源统计的可靠性,建议文件的英文字符在十万以上。 1、 编写一维信源统计程序,得出一维统计频次,计算信源熵及剩余度。 2、 编写一维信源统计程序,得出二维统计频次,计算信源熵及剩余度。 四,实验过程原始记录(数据,图表,计算等) 代码: #include #include #include #define NULL 0 int charge(char c) {int n; if(c>=65 return n; } else return -1; } void main() { int count[26][26]={0}; char zifu1,zifu2; int i,n,m,j; int sum=0; float q, sum1=0; FILE *fp; If((fp=(“file”, “rb”))==NULL) { printf(“ can’t open file!\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;i<26;i++) for(j=0;j<26;j++) sum=sum+count[i][j]; printf(“the number of all the code is %d\n”, sum); q=(float)sum; for(i=0;i<26;i++) for(j=0;j<26;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;i<26;i++) for(j=0;j<26;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); } 五,实验结果分析或总结 经过这次实验,学会了信源剩余度的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值