• 大小: 1KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-01-11
  • 语言: Matlab
  • 标签: 香农编码  

资源简介

本人写了一段香农编码的matlab代码,希望对大家有用,有不妥的地方希望大家指出

资源截图

代码片段和文件信息

function [Encodeaverage_code_lengthHencode_inefficiency] = shannan_code(p)
% 求香农编码,p:符号的概率分布
% Encode:编码码字,按照符号概率从大到小排列
%average_code_length:平均码字长度
% H:平均码字长度
% encode_inefficiency:编码效率
%Author:Leilei Zhou
%time:2010-6-4
if(sum(find(p<=0))~=0) 
    error(‘输入符号概率必须大于零‘);
end
if((sum(p)-1)>1e-6)
    error(‘概率之和不等于1‘);
end

p=fliplr(sort(p));
num=size(p2);
sum_p=zeros(size(p));%累加概率
code_length=zeros(size(p));
Encode={};%细胞矩阵
H=0;%信息熵
average_code_length=0;
%求累加概率、编码效率等
for i=1:num
    if(i==1)
        sum_p(1)=0;
        code_length(1)=1;
    else
        sum_p(i)=sum_p(i-1)+p(i-1);
        

评论

共有 条评论