插值主要用于物理学数学中,逼近某一确定值的方法

(1)插值是通过已知的离散数据求未知数据的方法。

(2)与拟合不同,插值要求曲线通过所有的已知数据。插值是离散函数逼近的重要方法,利用它可以通过函数在有限个点处的取值情况,估算出函数在其他点处的近似值。

(3)若函数 f(x),在自变量x(离散值)所对应的函数已知,求解出一个适当的特定函数 p(x) 使得 p(x) 在x处所取的函数值等于 f(x) 在x处的已知值。从而用 p(x) 来估计 f(x) 在这些x值之间的数所对应的函数值。

'''
scipy.interpolate.interp1d()  一维插值方法参数
# ---------------------------------------------------------- #
x      数组或列表类型,已知点的x坐标
y      数组或列表类型,已知点的y坐标
kind   差值类型。zero, nearest  阶梯插值, 0阶B样条曲线slinear, linear  默认线性插值, 用一条直线连接各个取样点, 1阶B样条曲线quadratic, cubic  二阶,三阶 曲线采样,更高阶的可以直接用整数值定
axis   指定沿y的某个轴进行插值,默认沿y的最后一个轴插值
# ---------------------------------------------------------- #
'''

案例一:线性插值

x 坐标为[0,1,2,...,9],坐标y的计算公式为: ,插值方法是要通过已知的10个点,找到能够完美经过这10个点的函数表达式 f,得到表达式后输入新的x坐标点,就能得到对应的新的y坐标点

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d# 创建已知点的(x,y)坐标
x = np.arange(0, 10)
y = np.exp(-x/3.0)
# 绘制离散点
# plt.plot(x, y, 'o')# 插值方法就是找到一个函数完全经过这些点,从而预测其他相关的信息
# 创建插值函数, 传入已知点的坐标, 使用线性插值
f = interp1d(x, y, kind='linear', axis=-1)  # 创建的结果是一个函数表达式# 传入新的点的x坐标,预测出y坐标
x_new = np.arange(0, 9, 0.2)
# 生成预测点
y_new = f(x_new)  # 对比旧点和新点的坐标
plt.plot(x, y, 'o', x_new, y_new, '*')
plt.show()

可以看到,插值后的新的坐标点能够经过旧的坐标点。


案例二:案例应用

问:

在一次实验中,在1到12的11个小时内,每隔1小时测量一次温度,测得的温度依次是:5、8、9、15、25、29、31、30、22、25、27、24。尝试估计每隔1/10小时的温度值。
答:

需要根据12小时的测量结果,插值计算出每0.1小时的测量结果。和上面一样,找到一个函数能够完美经过这12个坐标点,使用这个函数预测新的坐标。

下面使用两种差值类型,线性插值和二阶曲线插值,线性插值是在每两个坐标点之间用直线段相连,而二阶曲线插值是在每两个坐标点之间使用二次曲线相连。

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d# x为时间序列, y为每个小时的测量温度
x = np.arange(1, 13)
y = [5, 8, 9, 15, 25, 29, 31, 30, 22, 25, 27, 24]# 插值求得包含所有坐标点的函数表达式, 使用二阶插值
f1 = interp1d(x, y, kind='quadratic', axis=-1)
# 使用线性插值
f2 = interp1d(x, y, kind='linear', axis=-1)# 生成新的时间序列点
x_new = np.arange(1, 12, 0.1)# 二阶插值计算每个时间点对应的新的测量结果
y_new1 = f1(x_new)
# 二阶插值计算测量结果
y_new2 = f2(x_new)# 对比两种插值方法的坐标
plt.figure(figsize=(10,5))
plt.subplot(121)
plt.title('quadratic')
plt.plot(x, y, 'o', x_new, y_new1, '*')plt.subplot(122)
plt.title('linear')
plt.plot(x, y, 'o', x_new, y_new2, '*')
plt.show()

可以看出二阶插值方法比线性插值更加平滑,符合设计要求。

【Scipy高级计算】(3) 一维插值方法,附python完整代码相关推荐

  1. 【机器视觉案例】(5) AI视觉,手势调节物体尺寸,附python完整代码

    各位同学好,今天和大家分享一下如何使用opencv+mediapipe完成远程手势调节图片尺寸的案例.先放张图看效果.当拇指和食指竖起时,根据食指间的连线的长度自由缩放图片尺寸.图片的中点始终位于指尖 ...

  2. 【机器视觉案例】(5) AI视觉,远程手势控制虚拟计算器,附python完整代码

    各位同学好,今天和大家分享一下如何使用MediaPipe+Opencv完成虚拟计算器,先放张图看效果.FPS值为29,食指和中指距离小于规定阈值则认为点击按键,为避免重复数字出现,规定每20帧可点击一 ...

  3. 【MediaPipe】(4) AI视觉,远程手势调节电脑音量,附python完整代码

    各位同学好,今天和大家分享一下如何使用MediaPipe完成手势调节电脑音量,先放张图看效果. 注意!! 本节需要用到手部关键点的实时跟踪,我已经在之前的文章中详细写过了,本节会直接使用,有疑问的同学 ...

  4. 【深度学习】(2) 数据加载,前向传播2,附python完整代码

    生成数据集: tf.data.Dataset.from_tensor_slices(tensor变量) 创建一个数据集,其元素是给定张量的切片 生成迭代器: next(iter()) next() 返 ...

  5. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集

    各位同学好,经过前几章python机器学习的探索,想必大家对各种预测方法也有了一定的认识.今天我们来进行一次实战,心脏病病例预测,本文对一些基础方法就不进行详细解释,有疑问的同学可以看我前几篇机器学习 ...

  6. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化.岭回归方法.在上一篇文章中我介绍了线性回归算法的原理及推导过程:[机器学习](7) 线性回归算法:原理.公式 ...

  7. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

  8. 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集

    各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...

  9. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中的逻辑回归算法.内容主要有: (1) 算法原理:(2) 精确率和召回率:(3) 实例应用--癌症病例预测. 文末有数据集和python完整代码 1 ...

  10. 【路径规划】(1) Dijkstra 算法求解最短路,附python完整代码

    好久不见,我又回来了,这段时间把路径规划的一系列算法整理一下,感兴趣的点个关注.今天介绍一下机器人路径规划算法中最基础的 Dijkstra 算法,文末有 python 完整代码,那我们开始吧. 1. ...

最新文章

  1. 基于图像到UV Map映射的3D手部高保真重建网络(ICCV2021)
  2. 【转】0.SharePoint服务器端对象模型 之 序言
  3. js json数据传递传递、json数据解析
  4. 死锁 操作系统第二章知识点归纳总结
  5. .net Core 安装在linux上
  6. Caused by: java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
  7. 灌水导论——灌水法初步
  8. rm: cannot remove `.user.ini‘: Operation not permitted异常该如何解决?
  9. 如何在macOS中关闭优化电池充电功能?
  10. expdp导出表结构_Oracle用exp导出部分表和expdp
  11. android照片同步到另一部手机,怎样可以把以前手机里的照片导入另一个手机?...
  12. 介绍几款在线脑图和流程图制作工具
  13. 新西兰 计算机 转专业,想去新西兰留学读硕士,但又想转专业
  14. 基于C++的psf2otf实现
  15. prometheus监控域名证书到期时间
  16. Q:python编码
  17. 福昕阅读器无法注释的解决
  18. 换手机号都有哪些绑定信息需要更换?
  19. html代码中title什么意思,title是什么意思?SEO中title如何使用?
  20. spring boot项目实现向两张关联表同时插入数据到Mysql数据库

热门文章

  1. Java框架阶段学习总结
  2. 航班管家向怡宁:如何做APP界面设计
  3. POJ 2570 Fiber Network
  4. 智慧园区三维可视化物联网运营管理平台
  5. 华为认证考试怎么修改日期和取消?两个方法搞定!
  6. 2022-2027年中国酒店用品行业市场深度分析及投资战略规划报告
  7. img图片下面有间隙的6种解决方案
  8. java : java -jar,java -cp,jar cvf 命令详解
  9. 现代操作系统学习笔记二、进程和线程
  10. 基于STM32的蓝牙小车(来自LLC团队)