资源描述:
《基于matlab的英文文本信息量的统计-正确.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、信息论与编码实验报告实验一:英文文本信息量的计算一、实验目的及要求a)实验目的1、通过本实验熟悉Matlab软件编程环境2、编写M文件实现对英文文本信息量的统计,掌握信息量、信源熵的计算方法b)实验要求1、了解matlab中M文件的编辑、调试过程2、编写程序实现对给定英文文本信息量的统计3、英文文本中字母不区分大小写,考虑空格的信息量,但不考虑标点符号的信息量4、建议英文文本采用txt格式二、实验步骤及运行结果记录a)实验步骤1、查找各个英文字母及空格出现的频率2、在Matlab中读取给定的英文文章(该文章为txt格式)3、计算英文文章的长度4、统计在该文章中
2、各个字母及空格出现的次数并放入数组N中5、计算各个字母和空格的信息量及整篇文章的信息量6、计算信源熵b)实验结果sumI=3.0516e+003;H=4.0324三、程序流程图(附一)四、程序清单,并注释每条语句(附二)五、实验小结通过本次实验熟悉了Matlab软件编程环境和一些函数的功能及使用,掌握了信息量、信源熵的计算方法。3信息论与编码实验报告输入相应的频率计算各个字母、空格及整篇文章的信息量计算信源熵结束开始读取英文文章计算文章的长度嵌套的for循环语句判断是否符合循环条件判断字是否为大写母放入数组N中对应的位置是判断是否为小写字母放入数组N中对应的位
3、置是判断是否为小写字母放入数组N中对应的位置是真if否elseif否elseif假附一:3信息论与编码实验报告附二:wenzhang=textread('englishtext.txt','%5c');%读取英文文章M=size(wenzhang);row=M(1,1);line=M(1,2);%文章的长度N=zeros(1,27);fori=1:rowforj=1:lineifdouble(wenzhang(i,j))>96&&double(wenzhang(i,j))<=122N(1,double(wenzhang(i,j))-96)=N(1,double
4、(wenzhang(i,j))-96)+1;elseifdouble(wenzhang(i,j))>64&&double(wenzhang(i,j))<=90N(1,double(wenzhang(i,j))-64)=N(1,double(wenzhang(i,j))-64)+1;elseifdouble(wenzhang(i,j))==32N(1,27)=N(1,27)+1;endendend%统计各字母和空格出现的个数并存入N数组中。'a'的值为97,'z'的值为122,'A'的值为65,'Z'的值为90,空格的值为32fori=1:27P(1,i)=N(
5、1,i)/sum(N);end;%各个字母和空格出现的概率I=zeros(1,27);fori=1:27if(P(1,i)~=0)I(1,i)=log2(1/P(1,i));elseI(1,i)=0;endendsumI=sum(I.*P)%%%计算信源熵3