lab1.m
来自「shannon编码」· M 代码 · 共 22 行
M
22 行
wenzhang=textread('english.txt','%c'); %读入英文文章
len=size(wenzhang);
length=len(1,1); %文章的长度为length
N=zeros(1,26);
for i=1:length
if double(wenzhang(i,1))>96 && double(wenzhang(i,1))<=122
N(1,double(wenzhang(i,1))-96)= N(1,double(wenzhang(i,1))-96)+1;
end
end
%统计各字母出现的个数,存入N数组中,注大写字母并未考虑。‘a’的值为97,'z'的值为122,‘A’的值为65,‘Z’的值为90,思考如何处理大小写均存在的文本?
p=zeros(1,26);
p=N/length; %计算各字母出现的概率
I=zeros(1,26);
I=log2(1./p); %计算各字母的信息量
for i=1:26
if p(1,i)==0
I(1,i)=0;
end
end %出现概率为0的字母的信息量赋值为0
sumI=sum(I.*N) %计算整篇文章的总的信息量
Ip=I.*p; %两矩阵对应元素相乘
H=sum(Ip) %计算信源熵
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?