⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lab1.m

📁 shannon编码
💻 M
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -