首页 > 解决方案 > Python:平滑曲线看起来与原始数据相同?

问题描述

我正在使用 Python 3 来平滑光谱数据集,以(希望)更可靠地拟合数据,并且遇到了一些我似乎无法确定的障碍。

使用 Savitzky-golay 过滤器或 scipy 的 make_interp_spline 尝试平滑数据,如果我选择大于或等于实际数据点数的点数,“平滑”数据的输出与原始数据相同(152)在数据的这个小区域(见图1)

图 1:平滑(蓝色实线)和原始(黑色)数据

我假设它的实现可以正常工作,因为“插值”以创建一个新的 x 值数组,其少于原始 152 个数据点会产生您所期望的结果:这里的特征更粗略的表示(图. 2)

图 2:

我目前的实现如下:

from scipy.interpolate import make_interp_spline, BSpline

xnew = np.linspace(np.min(Hf_5pct_1[0:152,0]+Offset_6_22),np.max(Hf_5pct_1[0:152,0]+Offset_6_22), 50)

spl = make_interp_spline(Hf_5pct_1[0:152,0]+Offset_6_22, test1, k=3)
y_smooth = spl(xnew)

plt.figure()
plt.plot(xnew, y_smooth, 'b')

我是否错过了这种插值的要点,还是应该使用不同的方法来消除原始数据中的噪声?

谢谢!

标签: pythoninterpolationsmoothing

解决方案


推荐阅读