实验二 计算二阶马尔可夫信源的熵

已知二阶马尔可夫信源的转移矩阵:

#| 0.8 0.2 0 0 |
#| 0 0 0.5 0.5 |
#| 0.5 0.5 0 0 |
#| 0 0 0.2 0.8 |
#-1、计算二阶马尔可夫信源的极限概率分布:
#-2、计算该二阶马尔可夫信源信源的熵

#—已知二阶马尔可夫信源的转移矩阵:
#| 0.8 0.2  0   0  |
#|  0   0  0.5 0.5 | 
#| 0.5 0.5  0   0  |
#|  0   0  0.2 0.8 |
#-1、计算二阶马尔可夫信源的极限概率分布:
#-2、计算该二阶马尔可夫信源信源的熵.
print("----------计算二阶马尔可夫信源的熵--------------")
import numpy as np
from sympy import *
from fractions import Fraction # 小数变分数库
m=0
def judge(list1):
    global m
    result=0
    
    for i in range(2):
        if 0<= list1[i] <=1:
            #print("P(a%d)符合概率分布条件"%(i+1))
            result +=list1[i]
        else:
            print("P(a%d)不符合概率分布条件"%(i+1))
    if result ==1:
        m=1
        #print("全部的概率和为1,符合条件。")
    else :
        print("请输入符合概率分布的数值!")
            

def entropy(judge,x,y):
    b=[]
    b.append(x)
    b.append(y)   
    judge(b)
    if m==1:
        result=0
        for i in range(2):
            result -= b[i]*np.log2(b[i])
        return float("{0:.4f}".format(result))
    else: return print("程序结束,请重新输入调用函数!")


def markov(entropy): #马尔可夫
    a=np.array([[0.8,0.2,0,0],[0,0,0.5,0.5],[0.5,0.5,0,0],[0,0,0.2,0.8]])
    x,y,z,m=symbols("x y z m")
    eq=[a[0,0]*x+a[2,0]*z-x,
        a[0,1]*x+a[2,1]*z-y,
        a[1,2]*y+a[3,2]*m-z,
        a[3,3]*m+a[1,3]*y-m,
        x+y+z+m-1  ]
    result=solve(eq,[x,y,z,m])
    x=float(result[x])
    y=float(result.get(y))
    z=float(result.get(z))
    m=float(result.get(m))

    markov_entropy=x*entropy(judge,0.8,0.2)+y*entropy(judge,0.5,0.5)+z*entropy(judge,0.5,0.5)+m*entropy(judge,0.8,0.2)
    print("二阶马尔可夫信源信源的熵:%.2f  (比特/符号)"%(markov_entropy))
    
    print("二阶马尔可夫信源的极限概率分布:Q(E1)=%.4f  Q(E2)=%.4f   Q(E3)=%.4f   Q(E4)=%.4f"%(x,y,z,m))
    
markov(entropy)  
    
    
    
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值