信号数据shannon entropy计算

import math
import numpy as np
def shannon_entropy(single,k):
    '''
        single:1-D信号
        k: 分多少个bin
    '''
    numofx = single.shape[0]
    maxV = np.max(single)
    minV = np.min(single)
    bin = np.linspace(minV,maxV,k+1)

    bin_numx = [0]*k    # 落在每个bin的数据点数目

    for x in single:    # 计算落在每个bin的数据点数目
        for i in range(k):   # 看落在哪个bin
            if x <= bin[i]:
                bin_numx[i-1] += 1
    
    shannon_ent = 0

    for i in bin_numx:
        shannon_ent -= (i/numofx) * math.log((i/numofx),2)
    
    return shannon_ent

a = np.array([1,2,3,4,54,6,7,8,99])
b = shannon_entropy(a,2)

print(b)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值