文章目录
如图想对下面的折线 进行平滑处理
1 插值法对曲线平滑处理
实现所需的库: numpy、scipy、matplotlib
1.1 插值法的常见实现方法
nearest:最邻近插值法
zero:阶梯插值
slinear:线性插值
quadratic、cubic:2、3阶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 滤波器——详解