小波包降噪python
时间: 2023-11-09 08:02:03 浏览: 51
小波包降噪是一种信号处理方法,可以用于去除信号中的噪声。在Python中,可以使用PyWavelets库来实现小波包降噪。以下是一个简单的示例代码:
```python
import pywt
import numpy as np
# 生成带噪声的信号
x = np.linspace(0, 1, 100)
signal = np.sin(2 * np.pi * 5 * x) + np.sin(2 * np.pi * 10 * x) + np.random.randn(100) * 0.2
# 进行小波包分解
wp = pywt.WaveletPacket(signal, 'db2', mode='symmetric', maxlevel=4)
# 对每个小波包系数进行阈值处理
for node in wp.get_level(2, 'natural'):
if node.path.endswith('d'):
node.data = pywt.threshold(node.data, np.std(node.data) / 2)
# 重构信号
denoised_signal = wp.reconstruct(update=True)
# 绘制结果
import matplotlib.pyplot as plt
plt.plot(x, signal, label='Original signal')
plt.plot(x, denoised_signal, label='Denoised signal')
plt.legend()
plt.show()
```