python - Python:平滑曲线看起来与原始数据相同?
问题描述
我正在使用 Python 3 来平滑光谱数据集,以(希望)更可靠地拟合数据,并且遇到了一些我似乎无法确定的障碍。
使用 Savitzky-golay 过滤器或 scipy 的 make_interp_spline 尝试平滑数据,如果我选择大于或等于实际数据点数的点数,“平滑”数据的输出与原始数据相同(152)在数据的这个小区域(见图1)
我假设它的实现可以正常工作,因为“插值”以创建一个新的 x 值数组,其少于原始 152 个数据点会产生您所期望的结果:这里的特征更粗略的表示(图. 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')
我是否错过了这种插值的要点,还是应该使用不同的方法来消除原始数据中的噪声?
谢谢!
解决方案
推荐阅读
- vba - 从数组创建字典时出现运行时错误“13”类型不匹配
- python - 未找到 Matplotlib Qt5Agg 后端
- android - 在recyclerview中隐藏项目时如何填充空白
- swift - 一次将多个引用类型值设置为零
- django - 无需请求即可登录 django 用户
- postgresql - Postgres 使用 ''::text 语句创建空格
- node.js - Node.JS Firebase Auth - 有没有办法像客户端 Firebase Auth 一样保持用户会话?
- bootstrap-4 - 引导输入组在 Internet Explorer 中将表格推到超出屏幕宽度
- google-apps-script - 循环的返回值
- c++ - STL 模板的专业化