python滤波后小波去噪代码
时间: 2023-09-03 20:15:36 浏览: 76
小波去噪程序
4星 · 用户满意度95%
以下是一个示例代码,演示如何使用Python进行滤波和小波去噪:
```python
import numpy as np
import matplotlib.pyplot as plt
import pywt # 导入小波变换库
# 生成含有噪声的信号
t = np.linspace(0, 1, 200)
x = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 10 * t) + np.random.randn(len(t)) * 0.8
# 绘制原始信号
plt.subplot(2, 1, 1)
plt.plot(t, x, 'b')
plt.title('Original Signal')
# 使用中值滤波进行滤波
filtered = np.convolve(x, np.ones((3,))/3, mode='valid')
# 绘制滤波后的信号
plt.subplot(2, 1, 2)
plt.plot(t[1:-1], filtered, 'g')
plt.title('Filtered Signal')
# 小波去噪
coeffs = pywt.wavedec(filtered, 'db4', level=6) # 对滤波后的信号进行小波变换
threshold = np.std(coeffs[-1]) * 3 # 计算阈值
coeffs = [pywt.threshold(i, threshold, mode='soft') for i in coeffs] # 进行阈值处理
reconstructed = pywt.waverec(coeffs, 'db4') # 进行小波重构
# 绘制小波去噪后的信号
plt.figure()
plt.plot(t[1:-1], reconstructed, 'r')
plt.title('Denoised Signal')
plt.show()
```
该代码首先生成含有噪声的信号,并使用中值滤波进行滤波。然后使用小波变换对滤波后的信号进行小波分解,计算阈值并进行阈值处理,最后进行小波重构得到去噪后的信号,并绘制出来。
阅读全文