EEMD 计算正交性指标的公式以及python实现的代码
时间: 2024-05-14 10:18:56 浏览: 105
EEMD 是一种数据分解方法,可以将非线性和非平稳的数据分解成多个固有模态函数 (Intrinsic Mode Function, IMF)。为了评估 EEMD 分解后得到的 IMF 的正交性,可以使用正交性指标 (Orthogonality Index, OI)。OI 的计算公式如下:
$$OI = \frac{\sum_{i=1}^{N_{IMF}}\sum_{j=i+1}^{N_{IMF}}\left|\frac{\sum_{k=1}^{N}IMF_{i,k}IMF_{j,k}}{\sqrt{\sum_{k=1}^{N}(IMF_{i,k})^2\sum_{k=1}^{N}(IMF_{j,k})^2}}\right|}{\frac{1}{2}N_{IMF}(N_{IMF}-1)}$$
其中,$N_{IMF}$ 是分解出的 IMF 数量,$N$ 是原始数据的长度,$IMF_{i,k}$ 表示第 $i$ 个 IMF 在第 $k$ 个时间点的值。
下面是使用 Python 实现 OI 的代码:
```python
import numpy as np
def calc_oi(imfs):
n_imf = imfs.shape[0]
n = imfs.shape[1]
oi = 0
count = 0
for i in range(n_imf-1):
for j in range(i+1, n_imf):
numerator = np.sum(imfs[i]*imfs[j])
denominator = np.sqrt(np.sum(imfs[i]**2) * np.sum(imfs[j]**2))
oi += np.abs(numerator / denominator)
count += 1
oi /= count
return oi
```
其中,`imfs` 是一个 $N_{IMF}\times N$ 的二维数组,表示 EEMD 分解后得到的所有 IMF。函数返回 OI 的值。
阅读全文