TypeError: eemd() got an unexpected keyword argument 'return_residue'
时间: 2023-07-29 16:09:14 浏览: 114
TypeError: Unexpected keyword argument passed to optimizer: learning_rate 解决方法
如果您使用的是较旧版本的PyEMD库,可能不支持`return_residue`参数。您可以尝试以下代码:
```python
import numpy as np
from PyEMD import EEMD
import matplotlib.pyplot as plt
# 创建一个示例信号
t = np.linspace(0, 1, 200)
s = np.sin(11*np.pi*t*t) + 6*np.cos(77*np.pi*t)
# 初始化EEMD
eemd = EEMD()
# 进行EEMD分解
eIMFs = eemd.eemd(s)
# 计算并绘制残差
res = s - np.sum(eIMFs, axis=0)
plt.figure(figsize=(12, 9))
plt.subplot(len(eIMFs)+1, 1, 1)
plt.plot(t, s, 'r')
plt.ylabel('Original Signal')
plt.locator_params(axis='y', nbins=5)
for i in range(len(eIMFs)):
plt.subplot(len(eIMFs)+1, 1, i+2)
plt.plot(t, eIMFs[i], 'g')
plt.ylabel('eIMF %i' %(i+1))
plt.locator_params(axis='y', nbins=5)
plt.subplot(len(eIMFs)+1, 1, len(eIMFs)+1)
plt.plot(t, res, 'b')
plt.ylabel('Residue')
plt.locator_params(axis='y', nbins=5)
plt.xlabel('Time')
plt.show()
```
这里我们使用了`np.sum(eIMFs, axis=0)`计算分解后的IMFs的总和,然后将其从原始信号中减去得到残差。然后使用`matplotlib`库将每个IMF、原始信号和残差绘制在一个子图上。
注意:由于EEMD是一种随机算法,每次运行结果可能会略有不同。
阅读全文