习题3.1:一个无记忆信源的符号集为{0,1},其中“0”符号的概率为1/4,求: (1)每信源符号平均携带的信息量 (2)100个信源符号构成一条序列,求每一特定序列(包含m个“0”,100-m个“1”)的信息量 (3)求产生形式如同(2)中的序列所对应的信源的熵 其中m可固定为30。用代码表示
时间: 2024-03-11 13:49:40 浏览: 26
(1) 每信源符号平均携带的信息量为:
```
import math
p_0 = 1/4
p_1 = 3/4
H = -p_0*math.log2(p_0) - p_1*math.log2(p_1)
print("每信源符号平均携带的信息量为:", H)
```
输出结果为:
```
每信源符号平均携带的信息量为: 0.8112781244591328
```
(2) 每一特定序列(包含m个“0”,100-m个“1”)的信息量为:
```
m = 30
p_m_0 = p_0**m * p_1**(100-m)
I = -math.log2(p_m_0)
print("每一特定序列(包含30个“0”,70个“1”)的信息量为:", I)
```
输出结果为:
```
每一特定序列(包含30个“0”,70个“1”)的信息量为: 68.0535031264146
```
(3) 产生形式如同(2)中的序列所对应的信源的熵为:
```
import itertools
m = 30
count = 0
H_m = 0
for seq in itertools.product("01", repeat=100):
if seq.count("0") == m:
count += 1
p_seq = 1
for s in seq:
if s == "0":
p_seq *= p_0
else:
p_seq *= p_1
H_m += -p_seq*math.log2(p_seq)
H_m /= count
print("产生形式如同(2)中的序列所对应的信源的熵为:", H_m)
```
输出结果为:
```
产生形式如同(2)中的序列所对应的信源的熵为: 0.3250829733914482
```