声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1028|回复: 1

[综合讨论] 求助大神们啊。。绘制霍夫曼编码效率图

[复制链接]
发表于 2012-3-27 12:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我从网上找了霍夫曼编码的代码
然后自己修改了一下
可是运行之后就只有以下结果
信源信息熵:
    0.7219

??? Error using ==> times
Matrix dimensions must agree.

附代码:

clear all;
i=0;
n=0;
H=0;
p1=0.8;
p2=0.2;
p=[p1,p2];
B=length(p);%p为概率矩阵
for i=1:B
    H=H+(- p(i)*log2(p(i)));%计算信源信息熵
end
fprintf('信源信息熵:\n');
disp(H);

for n=2:8
W=[];
for i=0:n
W=[W p1^(n-i)*p2^i];
L=length(W);%W为概率矩阵
end
end
for i=1:L-1 %按概率分布大小对信源排序
    for j=i+1:L
        if W(i)<W(j)
           m=W(j);
           W(j)=W(i);
           W(i)=m;
        end
    end
end
Q=W;
m=zeros(L-1,L);
for i=1:L-1   %循环缩减对概率值排序,画出由每个信源符号概率到1.0 处的路径,
    [Q,l]=sort(Q);
    m(i,:)=[l(1:L-i+1),zeros(1,i-1)];
    Q=[Q(1)+Q(2),Q(3:L),1];
end
for i=1:L-1
    c(i,:)=blanks(L*L);
end
   c(L-1,L)='0';
   c(L-1,2*L)='1';
for i=2:L-1    %对字符数组c码字赋值过程,记下沿路径的“1”和“0”;
    c(L-i,1:L-1)=c(L-i+1,L*(find(m(L-i+1,:)==1))-(L-2):L*(find(m(L-i+1,:)==1)));
    c(L-i,L)='0';
    c(L-i,L+1:2*L-1)=c(L-i,1:L-1);
    c(L-i,2*L)='1';
    for j=1:i-1
        c(L-i,(j+1)*L+1:(j+2)*L)=c(L-i+1,L*(find(m(L-i+1,:)==j+1)-1)+1:L*find(m(L-i+1,:)==j+1));
    end
end
for i=1:L
    h(i,1:L)=c(1,L*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*L);%码字赋值
    ll(i)=length(find(abs(h(i,:))~=32)); %各码字码长
end
A=sum(p.*ll); %计算平均码长
E=H/A; %计算编码效率
n =2:0.1:8;
plot(n,E);%绘制曲线

望大神们赐教~~小女子将感激不尽~~在线等。。。。
回复
分享到:

使用道具 举报

发表于 2012-3-28 02:03 | 显示全部楼层
LZ报错也没给齐!
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> zzz at 56
A=sum(p*ll);

p是1*2, ll是1*9, 两者怎乘?

Ref: 5F, 常见的程序出错问题整理 http://forum.vibunion.com/thread-46001-1-1.html
From http://forum.vibunion.com/home-s ... -blog-id-18250.html
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 02:21 , Processed in 0.065427 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表