python 曲线平滑
时间: 2023-11-29 22:46:48 浏览: 272
以下是两种Python曲线平滑的方法:
1.移动平均滤波器
移动平均滤波器是一种简单的平滑方法,它通过计算数据点的移动平均值来减少噪声。在Python中,可以使用NumPy库中的convolve函数来实现移动平均滤波器。下面是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
def moving_average(x, w):
return np.convolve(x, np.ones(w), 'valid') / w
# 生成随机数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.randn(len(x)) * 0.1
# 绘制原始数据
plt.plot(x, y, label='Raw')
# 绘制平滑后的数据
plt.plot(x[w-1:], moving_average(y, w), label='Smoothed')
plt.legend()
plt.show()
```
2.Savitzky-Golay滤波器
Savitzky-Golay滤波器是一种基于多项式拟合的平滑方法,它可以更好地保留数据的趋势。在Python中,可以使用SciPy库中的savgol_filter函数来实现Savitzky-Golay滤波器。下面是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter
# 生成随机数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.randn(len(x)) * 0.1
# 绘制原始数据
plt.plot(x, y, label='Raw')
# 绘制平滑后的数据
plt.plot(x, savgol_filter(y, 51, 3), label='Smoothed')
plt.legend()
plt.show()
```
阅读全文