permutation entropy 代码
时间: 2023-07-02 22:06:43 浏览: 50
以下是 Python 中计算排列熵的代码,使用了 NumPy 库和 Python 自带的 itertools 库:
```python
import numpy as np
import itertools
def permutation_entropy(time_series, m, delay):
"""计算排列熵(permutation entropy)"""
n = len(time_series)
permutations = np.array(list(itertools.permutations(range(m))))
freq = np.zeros(len(permutations))
for i in range(n - delay * (m - 1)):
sorted_indices = np.argsort(time_series[i:i + delay * m:delay])
ranking = np.empty(m, dtype=int)
ranking[sorted_indices] = np.arange(m)
index = np.where(np.all(permutations == ranking, axis=1))[0]
freq[index] += 1
prob = freq / (n - delay * (m - 1))
pe = -np.sum(prob * np.log(prob))
return pe
```
其中,`time_series` 是时间序列数据,`m` 是选取的子序列长度,`delay` 是选取子序列时的采样间隔。该函数先通过 itertools 库生成了所有可能的排列,然后逐个计算每个排列在时间序列数据中出现的频率,最后计算排列熵并返回。注意,此代码中没有对输入数据进行异常处理和参数校验,使用时需要自行添加。