首页  >  文章  >  后端开发  >  如何有效平滑噪声数据曲线?

如何有效平滑噪声数据曲线?

Susan Sarandon
Susan Sarandon原创
2024-10-20 15:58:29637浏览

How to Effectively Smoothen Noisy Data Curves?

优化平滑噪声曲线

考虑一个近似为的数据集:

import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.random(100) * 0.2

这包括 20% 的变化。 UnivariateSpline 和移动平均线等方法存在局限性。

Savitzky-Golay 过滤器

一个有效的解决方案是 scipy 中提供的 Savitzky-Golay 过滤器。它使用最小二乘回归来使用多项式估计小窗口中心的值。然后窗口移动以重复该过程,从而对每个点进行优化调整。

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.random(100) * 0.2
yhat = savgol_filter(y, 51, 3) # window size 51, polynomial order 3

plt.plot(x,y)
plt.plot(x,yhat, color='red')
plt.show()

以上是如何有效平滑噪声数据曲线?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn