请用python写出小波阈值去噪的示例代码
时间: 2023-08-17 14:05:57 浏览: 103
以下是一个使用小波阈值去噪的示例代码:
```python
import pywt
import numpy as np
# 生成一个带有噪声的信号
t = np.linspace(0, 1, 1000, endpoint=False)
signal = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t) + np.random.randn(1000) * 0.5
# 使用小波阈值去噪
threshold = np.sqrt(2 * np.log(len(signal)))
coeffs = pywt.wavedec(signal, 'db4', level=6)
coeffs[1:] = (pywt.threshold(i, threshold, mode='soft') for i in coeffs[1:])
filtered_signal = pywt.waverec(coeffs, 'db4')
# 绘制原始信号和去噪后的信号
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
ax1.plot(t, signal)
ax1.set_title('Original signal')
ax1.set_xlabel('Time')
ax1.set_ylabel('Amplitude')
ax2.plot(t, filtered_signal)
ax2.set_title('Filtered signal')
ax2.set_xlabel('Time')
ax2.set_ylabel('Amplitude')
plt.tight_layout()
plt.show()
```
该代码首先生成一个带有噪声的信号,然后使用小波阈值去噪。这里使用了 Daubechies 4 小波作为基函数,并将信号分解为 6 层小波系数。使用一个阈值来对小波系数进行软阈值处理,最后重构出去噪后的信号。最后,代码使用 matplotlib 库将原始信号和去噪后的信号绘制出来。
阅读全文