python 数据、曲线平滑处理——插值法对折线平滑处理——详解

文章介绍了曲线平滑处理的几种方法,包括使用插值法如最邻近插值、线性插值等,以及Savitzky-Golay滤波器和基于Numpy.convolve的滑动平均滤波。通过插值法的代码实例展示了如何对数据进行平滑处理,同时指出了插值与拟合的区别。文章提供了详细的步骤和相关库的使用方法。
摘要由CSDN通过智能技术生成

如图想对下面的折线 进行平滑处理
在这里插入图片描述

1 插值法对曲线平滑处理

实现所需的库: numpy、scipy、matplotlib

1.1 插值法的常见实现方法

nearest:最邻近插值法
zero:阶梯插值
slinear:线性插值
quadratic、cubic:23阶B样条曲线插值

1.2 拟合和插值的区别

1、插值:简单来说,插值就是根据原有数据进行填充,最后生成的曲线一定过原有点。

2拟合:拟合是通过原有数据,调整曲线系数,使得曲线与已知点集的差别(最小二乘)最小,最后生成的曲线不一定经过原有点。

1.3 代码实例

代码语法:

通过执行from scipy.interpolate import make_interp_spline,导入make_interp_spline模块,之后调用make_interp_spline(x, y)(x_smooth)函数实现。

官方帮助文档: scipy.interpolate.make_interp_spline

import numpy as np
from matplotlib import pyplot as plt
from scipy.interpolate import make_interp_spline

Size = 30
x = np.arange(Size)
y = np.random.randint(1, Size, Size)

#平滑前
plt.plot(x, y,'r')
plt.show()

#平滑处理后
x_smooth = np.linspace(x.min(), x.max(), 500)  # np.linspace 等差数列,从x.min()到x.max()生成300个数,便于后续插值
y_smooth = make_interp_spline(x, y)(x_smooth)
plt.plot(x_smooth, y_smooth,'b')
plt.show()

在这里插入图片描述

插值法 平滑处理 前后对比
在这里插入图片描述

2 曲线平滑处理——Savitzky-Golay 滤波器——详解

曲线平滑处理——Savitzky-Golay 滤波器——详解

3 基于Numpy.convolve实现滑动平均滤波——详解

基于Numpy.convolve实现滑动平均滤波——详解

插值法对折线平滑处理——详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-G-B

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值