EEMD 的分解精度也可以应用IO 值来进行评价,IO计算公式及其python实现
时间: 2023-12-29 15:04:46 浏览: 78
EEMD_eemd预测_分解预测_EEMD的python编程文件_风速_eemd预测_
5星 · 资源好评率100%
I/O值是评价信号分解精度的指标之一,通过计算信号在分解前后的信息熵差异来评价信号分解的效果。其计算公式如下:
$$ IO = \frac{H_{orig} - H_{decomp}}{H_{orig}} \times 100\% $$
其中,$H_{orig}$为原始信号的信息熵,$H_{decomp}$为分解后得到的各个IMF和残差的信息熵之和。IO值越大,表示分解的效果越好。
以下是Python实现:
```python
import numpy as np
from PyEMD import EMD
from scipy.stats import entropy
def calc_io(signal, num_imfs):
# 对信号进行EMD分解
emd = EMD()
imfs = emd(signal, max_imf=num_imfs)
residual = imfs[-1]
imfs = imfs[:-1]
# 计算原始信号的信息熵
orig_entropy = entropy(np.abs(signal))
# 计算分解后各个IMF和残差的信息熵之和
decomp_entropy = np.sum([entropy(np.abs(imf)) for imf in imfs]) + entropy(np.abs(residual))
# 计算IO值
io = (orig_entropy - decomp_entropy) / orig_entropy * 100
return io
```
其中,`signal`为输入的信号,`num_imfs`为要分解的IMF数。该函数返回计算得到的IO值。
阅读全文