天津理工大学信息论与编码实验(1)

2021/11/23 from Xwhite

实验一离散信源的统计度量-自信量和熵的计算

实验要求

1、请分别完成离散信源自信息量及信源熵
根据所编函数计算如下信源的自信息量及信源熵。
在这里插入图片描述

2、有条英文信息总共包含100个字符,假定其中每个字符从26个英文字母和3个标点符号中等概率选取,那么这条信息提供的信息量为多少?

3、若将上述29个字符分为三类,第一类中包含9个字符,该类出现的概率为1/7;第二类中包含13个字符,该类出现的概率为2/7;第三类中包含7个字符,该类出现的概率为4/7;每类中各字符均以等概率出现,求此时该信源的信息熵。

4、有两个二元随机变量X和Y,它们的联合概率分布函数如下表:
在这里插入图片描述
试求:
a、熵H(X),联合熵H(X,Y);
b、条件熵H(X|Y);
c、平均互信息I(X;Y);

实验代码

from math import *


# 求各个符号信息量
def xxl(v_list):
    i = 0
    for x in v_list:
        i += 1
        result = -log(x, 2)
        print("I(x%d)=%s" % (i, result))


# 求信源熵
def ent(v_list):
    result = 0
    for x in v_list:
        result += -1 * log(x, 2) * x
    return result


# N次扩展离散无记忆信源熵
def N_ent(n, p):
    return n * log(p, 2)


# 第四题
def Result_4():
    x_list = [1 / 2, 1 / 2]
    y_list = [1 / 2, 1 / 2]
    xy_list = [1 / 8, 1 / 8, 3 / 8, 3 / 8]
    print('H(X)=', ent(x_list))
    print('H(Y)=', ent(y_list))
    print('H(XY)=', ent(xy_list))
    a = ent(xy_list) - ent(y_list)
    b = ent(x_list) + ent(y_list) - ent(xy_list)
    # I(X;Y) = H(X)+H(Y)-H(XY)
    print('H(X|Y)=', a)
    print('I(X;Y)=', b)


if __name__ == '__main__':
    value_list = [1 / 2, 1 / 4, 1 / 8, 1 / 8]
    value3_list = [1 / 7, 2 / 7, 4 / 7]
    print('第1题结果:')
    xxl(value_list)
    print("H(x)=", ent(value_list))
    print('第2题结果为:', N_ent(100, 29))
    print('第3题结果为:',ent(value3_list))
    print('第4题结果为:')
    Result_4()

运行结果

在这里插入图片描述
如果结果有错请在评论区指正

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值