信息理论与编码:实验一:使用matlab绘制熵函数

一、绘制二元信源的熵函数曲线

代码:

p = 0.00001:0.001:0.99999;
h = -p .* log2(p) - (1-p) .* log2(1-p);
plot(p,h);
title('二进制熵函数曲线');
xlabel('p')
ylabel('H(p,1-p)');

 运行结果:

 二、绘制三元信源的熵函数曲线

代码:

p=linspace(0.00001,0.99999,100);%也可以使用(eps, 1-eps, 100)eps代表极小值,避免0概率情况
q=linspace(0.00001,0.99999,100);
[P,Q]=meshgrid(p,q);
P_Q=P+Q;

%判断概率分布是否满足完备性
for n=1:100
    for m=1:100
        if P_Q(n,m)>=1
            Q(n,m)=nan;
        end
    end
end

H = -P .* log2(P) - Q .* log2(Q) - (1-P-Q) .* log2(1-P-Q);
mesh(P, Q, H)
title('三元信源熵函数的图形')

运行结果:

 三、计算任意数量符号信源的熵值

p = [0.1 0.2 0.3 0.4];%不同信源可对p进行修改得到不同结果
H = 0;

if sum(p)~=1
   error('不满足概率完备性,请检查信源分布'); 
else
    L = length(p);
    fprintf('L = %d\n', L);
end

for i = 1:L
    H = H - p(i) .* log2(p(i));
end
fprintf('H = %.3f\n', H);

运行结果:

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值