1

基于这篇关于脑机接口的论文,我想使用离散小波变换提取时频域特征,然后用给定方程计算能量和熵。

在此处输入图像描述

所以我在python中选择了pywt,现在我有下面的代码来获取每个频带的小波和熵(例如我使用的是 D2 ),这里是数据的链接:

import numpy as np
data = np.loadtxt('data.txt')

import pywt
cA5, cD5, cD4, cD3, cD2, cD1  = pywt.wavedec(data,'db4',mode='symmetric',level= 5)


Ent = 0 
for d in data:
    E = d**2
    p = cD2 * E
    Ent -= np.sum( np.abs( p * np.log(p) ) ) 
print(Ent)

但我正在nan为每个频段获取熵。如何解决获取小波熵的 nan 值?

4

1 回答 1

1

您的问题是小波变换的第二频带结果中的负数。负数的对数导致nan使用python库numpyValueError: math domain error引发异常。math

顺便说一句,我认为您在实施公式时犯了一个错误。我认为这是正确的实现:

ENT2 = -np.dot(np.log(np.square(cD2)), np.square(cD2))
ENG = np.square(cD2).sum()
于 2021-10-15T16:54:22.540 回答