一、实验目的和要求
1、掌握MATLAB的基本运算功能;
2、掌握信息熵的计算方法。
二、实验的主要内容
信源概率分布数据参考教材的练习题2.24(1) 计算该信源(前后无依赖关系)的信息熵H(X)。
建立文件ex1.m,调用 entropy.m,输入概率分布及个数,计算信息熵。
entropy.m如下:
function H=entropy(P,r)
要求:
1)判断是否符合概率分布条件;
2)判断是否符合概率和为1。
#-信源概率分布数据参考教材的练习题2.24(1) 计算该信源(前后无依赖关系)的信息熵H(X)。
#-要求:
#-1)判断是否符合概率分布条件;
#-2)判断是否符合概率和为1。
import numpy as np
print("----------------实验一-信息熵的计算------------------")
m=0
def judge(list1,num):
global m
result=0
for i in range(num):
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):
pro=input("请输入概率分布,不同概率之间用空格隔开:")
num=int(input("请输入概率分布的个数:"))
a=pro.split(" ")
b=[]
for i in a:
b.append(float(i))
judge(b,num)
if m==1:
result=0
for i in range(num):
result -= b[i]*np.log2(b[i])
return print("熵H(X)= %.4f (比特/符号)"%(result))
else: return print("程序结束,请重新输入调用函数!")
entropy(judge)