matlab 实现霍夫曼编码

编码内容包括:用matlab实现霍夫曼编码,并且求出相应的信源熵,平均码长,和编码效率。

以下是代码:

%霍夫曼编码
%huffman_code
%编码思路:根据位置矩阵的变化过程反推生成霍夫曼编码
n=input('请输入编码个数:\n');
c=[];
% for i=1:n
%     fprintf('请输入第%d个编码:\n',i);
%     c(i)=input('');
% end
c=rand(1,n);%********随机生成数据********************
c=c/sum(c);
p=c;
disp(p);
w=[;];%***************位置矩阵,记录数据的变化过程*****
for i=1:n-1
    [p,l]=sort(p);
    w(i,:)=[l(1:n-i+1),zeros(1,i-1)];
    p=[p(1)+p(2),p(3:n),1];
end
a={;};%**********字符数组,生成霍夫曼码****************
for i=1;2*(n-1)
    for j=1:n
        a{i,j}=' ';
    end
end%*****************初始化*********************
a{2*n-2,1}='0';
a{2*n-2,2}='1';
for i=1:n-1
    for j=1:i+1
        a{2*(n-i)-1,j}=a{2*(n-i),find(w(n-i,:)==j)};
    end
    if((n-i-1)<=0)
&n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值