EMD正交性指标计算公式及其python实现
时间: 2023-07-07 20:08:10 浏览: 128
EMD正交性指标是用来评估两个独立的经验模态分解(EMD)组分之间正交性的指标。其计算公式为:
$$
O = \frac{\sum_{i=1}^{n}\sum_{j=1}^{m}\langle IMF_i, IMF_j\rangle^2}{\left(\sum_{i=1}^{n}\sum_{j=1}^{m}\langle IMF_i, IMF_i\rangle^2\right)^{1/2}\left(\sum_{i=1}^{n}\sum_{j=1}^{m}\langle IMF_j, IMF_j\rangle^2\right)^{1/2}}
$$
其中 $IMF_i$ 和 $IMF_j$ 分别表示第 $i$ 和第 $j$ 个独立的经验模态分解组分,$\langle\cdot,\cdot\rangle$ 表示内积运算,$n$ 和 $m$ 分别表示两个独立的经验模态分解组分的数量。
下面是Python实现代码:
```python
import numpy as np
def emd_orthogonality(imfs1, imfs2):
"""
计算两个独立的经验模态分解组分之间的EMD正交性指标.
:param imfs1: array-like, shape (n_imfs1, n_samples)
第一个独立的经验模态分解组分.
:param imfs2: array-like, shape (n_imfs2, n_samples)
第二个独立的经验模态分解组分.
:return: float
EMD正交性指标.
"""
n_imfs1 = imfs1.shape[0]
n_imfs2 = imfs2.shape[0]
# 计算内积矩阵
inner_products = np.zeros((n_imfs1, n_imfs2))
for i in range(n_imfs1):
for j in range(n_imfs2):
inner_products[i, j] = np.dot(imfs1[i], imfs2[j])
# 计算EMD正交性指标
numerator = np.sum(inner_products ** 2)
denominator = np.sqrt(np.sum(inner_products ** 2)) * np.sqrt(np.sum(inner_products ** 2, axis=0))
return numerator / denominator
```
其中 `imfs1` 和 `imfs2` 分别表示两个独立的经验模态分解组分矩阵,其每一行对应一个经验模态分解组分,每一列对应一个样本点。函数返回计算得到的EMD正交性指标。