matlab统计英文文本信息量

信息论与编码实验报告

实验一:英文文本信息量的计算 一、 实验目的及要求

a) 实验目的 1、 通过本实验熟悉 Matlab 软件编程环境 2、 编写 M 文件实现对英文文本信息量的统计,掌握信息量、信源熵的 计算方法 b) 实验要求 1、 了解 matlab 中 M 文件的编辑、调试过程 2、 编写程序实现对给定英文文本信息量的统计 3、 英文文

本中字母不区分大小写,考虑空格的信息量,但不考虑标点 符号的信息量 4、 建议英文文本采用 txt 格式

二、 实验步骤及运行结果记录

a) 实验步骤 1、查找各个英文字母及空格出现的频率 2、在 Matlab 中读取给定的英文文章(该文章为 txt 格式) 3、计算英文文章的长度 4、统计在该文章中各个字母及空格出现的次数并放入数组 N 中 5、计算各个字母和空格的信息量及整篇文章的信息量 6、计算信源熵 b)实验结果

sumI = 3.0516e+003;H = 4.0324

三、 程序流程图(附一) 四、 程序清单,并注释每条语句(附二) 五、 实验小结 通过本次实验熟悉了 Matlab 软件编程环境和一些函数的功能及使用, 掌 握了信息量、信源熵的计算方法。 1

信息论与编码实验报告 附一: 开始

读取英文文章

计算文章的长度

嵌套的 for 循环语句 假 判断是否符合循环条件 真

if 否 elseif

判断字是否为大写母

输入相应的频率 否 elseif

判断是否为小写字母 计算各个字母、空格及 整篇文章的信息量 是

判断是否为小写字母 是 计算信源熵 是

放入数组 N 中对应的位置 放入数组 N 中对应的位置 放入数组 N 中对应的位置 结束

信息论与编码实验报告 附二:

wenzhang=textread('实验一:english text.txt','\'); M=size(wenzhang); row=M(1,1); line=M(1,2); 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,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 P=[0.063,0.0105,0.023,0.035,0.105,0.0221,0.011,0.047,0.055,0.001,0.003, ... 0.029,0.021,0.059,...

0.0644,0.0175,0.001,0.053,0.052,0.071,0.0215,0.008,0.012,0.002,0.012,0.001,0.2];%各 个字母和空格出现的概率 I=zeros(1,27); I=log2(1./P); 量 sumI=sum(I.*N) IP=I.*P;

H=sum(IP) %计算整篇文章的总的信息量 %两个矩阵对应原素相乘 %%计算信源熵 %计算各个字母和空格的信息

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4