资源描述:
《信源熵值计算实验报告材料(成型)(2)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用信息论与编码课程设计报告设计题目:专业班级学号学生姓名指导教师教师评分 年 月 日文档实用目录目录一、设计任务与要求1二、设计思路1三、设计流程图2四、程序运行及结果3五、心得体会3参考文献3附录:源程序4文档实用文档实用设计一.信源熵值计算一、设计任务与要求任务与要求:统计任意文本文件中各字符(不区分大小写)数量,计算字符概率,并计算信源熵。二、设计思路由于能力有限,该程序统计只含有字母文档与空格的文档,下面对程序进行讲解:第一步:打开一个名为“text”的TXT文档,并判断文档是否为空,读入一篇英文
2、文章存入一个数组temp,为了程序准确性将所读内容转存到另一个数组S,计算该数组中每个字母与空格的出现次数(遇到小写字母都将其转化为大写字母进行计数),每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;第三步:通过统计数据和信息熵公式计算出所求信源熵值并计算文档长度。文档实用一、设计流程图开始判断是否为空文档文档实用是否文件打开失败!打开一个文档文件,将其中的英文字母读入数组计算每个字母以及空格出现的次数以及进而算出频率↓利用信息熵公式求出信息熵字符长度输出结果四、程序运行及结果
3、建立文件夹,输入文字,编写好程序并运行,查看结果文档实用输入测试文档“text2”Thereisnohatewithoutfear.Hateiscrystallizedfear,fearsdividend,fearobjectivized.Wehatewhatwefearandsowherehateis,fearislurking.Thuswehatewhatthreatensourperson,ourvanityandourdreamsandplansforourselves.Ifwecanisolatethi
4、selementinwhatwehatewemaybeabletoceasefromhating.结果:四、心得体会信息论与编码是我们电子信息工程的一门重要的专业课,通过对本次课程设计,学习将学到的理论知识用于实践,同时也学习了用软件编写程序,进一步对本课程知识的巩固和理解。学习分析问题,解决问题的方法和途径,提高对本专业的学习兴趣。进一步熟悉信源熵值的计算,掌握编程语言字符处理程序的设计和调试技术。文档实用参考文献[1]谭浩强.C程序设计,1991年7月[2]陈朔鹰等编著.C语言程序设计基础教程.兵器工业出版社
5、,1994年9月[3]姜仲秋等主编,C语言程序设计,南京大学出版社,1998年1月。[4]盛骤,谢式千,潘承毅.《概率论与数理统计》[M].高等教育出版.1989.附录:源程序#include#include#include#include#defineN1000intmain(void){chars[N],M[N];inti=0,j=0,n=0,L=0;intlen,num[27]={0};doubleresult=0,p[27]={0}
6、;FILE*f;chartemp[N];/*以下是打开一个指定文件的过程*/if(!(f=fopen("C:\test2.txt","rb"))){文档实用printf("文件打开失败!");return0;}while(!feof(f))//feof输入输出函数,检查文件是否结束,如结束,则返回非零值,否则返回0.函数原型为:intfeof(FILE*fp){len=fread(temp,1,486,f);//fread返回读取的字符个数temp为内存区域首地址1为每次读入字节数486读入次数f指针}fc
7、lose(f);//关闭文件temp[len]=' ';//方便统计字符总数memcpy(s,temp,sizeof(temp));//从temp中拷贝sizeof个字节到目标s中/*统计26个字母及空格出现次数*/for(i=0;i='a'&&s[i]<='z')num[s[i]-97]++;elseif(s[i]>='A'&&s[i]<='Z')num[s[i]-65]++;}文档实用printf("文档中各
8、个字母出现的次数:");for(j=0;j<26;j++){M[j]=num[j];printf("%3c:%dt",j+65,M[j]);L++;if(L==3){printf("");L=0;}}printf("空格:%dt",num[26]);/*统计26个字母或者空格出现概率*/printf("文档中各个字母出现的概率:");for(i=0;i