1|0均值滤波器
均值滤波器是一种使用频次较高的线性滤波器。它的实现原理很简单,就是指定一个长度大小为奇数的窗口,使用窗口中所有数据的平均值来替换中间位置的值,然后平移该窗口,平移步长为 1,继续重复上述操作,直至滑动到时序数据的末尾,如此一来,对时序数据的过滤操作就结束了。均值滤波器的思路简单,计算速度快,但是它容易被窗口中的极值点或者峰值所左右,不能很好地保留序列的边缘信息,在去噪的同时也对数据信号的细节特征产生了一定的破坏,不能很好地去除噪声点,这极大地影响了模型的预测精度。
均值滤波的公式
其中,m表示窗口大小,xi表示窗口中的第 i个数据,x表示窗口中所有数据的均值。
python代码实现均值滤波
具体应用到数据上:高频数据未完全拟合,其他数据也与源数据拟合程度一般
2|0 中值滤波器
中值滤波是一种非线性的滤波算法,它是将指定长度大小为奇数的窗口中的所有数据按从小到大的顺序进行排列,并将排好序的数据的中值取代窗口中间的值。中值滤波克服了均值滤波所存在的问题,对窗口中的极端值不敏感,从而可以有效保留区域中的边缘信息,并且能有效抑制椒盐噪声和脉冲噪声,避免细节特征的丢失。但是,在面对均匀分布的高斯噪声时,它表现很差。
中值滤波的公式见式
具体的python实现代码如下:
应用到数据上:中值滤波将高频拟合,其他数据也与源数据拟合程度一般
3|0 SG滤波器
对曲线进行平滑处理,通过Savitzky-Golay 滤波器,可以在scipy库里直接调用,不需要再定义函数。
python代码实现:
# 备注:
data:代表曲线点坐标(x,y)中的y值数组
window_length:窗口长度,该值需为正奇整数。例如:此处取值5
k值:polyorder为对窗口内的数据点进行k阶多项式拟合,k的值需要小于window_length。例如:此处取值3
mode:确定了要应用滤波器的填充信号的扩展类型。(This determines the type of extension to use for the padded signal to which the filter is applied. )
python原理手写代码实现:
应用到数据上效果:此图更加接近源曲线,并且将高频部分进行平滑处理,拟合低频部分
__EOF__
作 者:清风紫雪
出 处:https://www.cnblogs.com/xiaofengzai/p/15961937.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!





