Python曲线平滑

本文介绍了如何使用Python的Savitzky-Golay滤波器对高频波动的曲线进行平滑处理。通过调整窗口长度(window_length)和多项式拟合阶数(polyorder),可以实现不同程度的平滑效果。当window_length较小时,曲线更接近原始数据;而polyorder较大时,曲线更平滑,但过大会导致拟合问题,高频部分可能变为直线。
摘要由CSDN通过智能技术生成

在编写测试程序的时候,由于数据帧数多的原因,导致生成的曲线图比较难看,如下图:

在这里插入图片描述

由于高频某些点的波动导致高频曲线非常难看,因此需要对曲线做平滑处理,让曲线过渡更平滑。对曲线进行平滑处理,这里推荐使用Savitzky-Golay 滤波器,可以在scipy库里直接调用,不需要再定义函数。

Python中 Savitzky-Golay 滤波器调用如下:

tmp_smooth = scipy.signal.savgol_filter(tmp,53,3)

scipy函数解释:
scipy.signal.savgol_filter(x, window_length, polyorder, deriv=0, delta=1.0, axis=-1, mode=‘interp’, cval=0.0)[source]
Apply a Savitzky-Golay filter to an array.
This is a 1-d filter. If x has dimension greater than 1, axis determines the axis along which the filter is applied.

在scipy函数解释中,x为原始数据,即上面代码中的tmp数据。window_length是窗口长度,该值需为正奇整数。polyorder为对窗口内的数据点进行k阶多项式拟合,k的值需要小于window_length。

现在看一下window_length和k这两个值对曲线的影响。

(1) 首先是window_length对曲线的平滑作用,代码如下:

tmp_smooth1 = scipy.signal.savgol_filter(tmp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值