1、实验一:英文文本信息量的计算
一、 实验目的及要求
a) 实验目的
1、 通过本实验熟悉Matlab软件编程环境
2、 编写M文件实现对英文文本信息量的统计,掌握信息量、信源熵的计算方法
b) 实验要求
1、 了解matlab中M文件的编辑、调试过程
2、 编写程序实现对给定英文文本信息量的统计
3、 英文文本中字母不区分大小写,考虑空格的信息量,但不考虑标点符号的信息量
4、 建议英文文本采用txt格式
二、 实验步骤及运行结果记录
a) 实验步骤
1、查找各个英文字母及空格出现的频率
2、在Matlab中读取给定的英文文章(该文章为txt格式)
3、计算英文文章
2、的长度
4、统计在该文章中各个字母及空格出现的次数并放入数组N中
5、计算各个字母和空格的信息量及整篇文章的信息量
6、计算信源熵
b)实验结果
sumI = 3.0516e+003;H = 4.0324
三、 程序流程图(附一)
四、 程序清单,并注释每条语句(附二)
五、 实验小结
通过本次实验熟悉了Matlab软件编程环境和一些函数的功能及使用,掌握了信息量、信源熵的计算方法。
输入相应的频率
计算各个字母、空格及整篇文章的信息量
计算信源熵
结束
开始
读取英文文章
计算文章的长度
嵌套的for循环语句
判断是否符合循环条件
3、
判断字是否为大写母
放入数组N中对应的位置
是
判断是否为小写字母
放入数组N中对应的位置
是
判断是否为小写字母
放入数组N中对应的位置
是
真
if
否elseif
否elseif
假
附一:
附二:
wenzhang=textread('english text.txt','%5c'); %读取英文文章
M=size(wenzhang);
row=M(1,1);
line=M(1,2); %文章的长度
4、 N=zeros(1,27);
for i=1:row
for j=1:line
if double(wenzhang(i,j))>96&&double(wenzhang(i,j))<=122
N(1,double(wenzhang(i,j))-96)=N(1,double(wenzhang(i,j))-96)+1;
elseif double(wenzhang(i,j))>64&&double(wenzhang(i,j))<=90
N(1,double(wenzhang(i
5、j))-64)=N(1,double(wenzhang(i,j))-64)+1;
elseif double(wenzhang(i,j))==32
N(1,27)=N(1,27)+1;
end
end
end %统计各字母和空格出现的个数并存入N数组中。'a'的值为97,'z'的值为122,'A'的值为65,'Z'的值为90,空格的值为32
for i=1:27
P(1,i)=N(1,i)/sum(N);
end
;%各个字母和空格出现的概率
I=zeros(1,27);
for i=1:27
if (P(1,i)~=0)
I(1,i)=log2(1/P(1,i));
else
I(1,i)=0;
end
end
sumI=sum(I.*P) %%%计算信源熵
(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)
编辑版word