Scipy插值函数

本文介绍了Scipy库中的插值功能,包括一维插值函数interp1d、二维插值函数interp2d以及样条插值。通过示例代码展示了不同插值技术的使用方法,并对比了线性插值和三次插值的效果,帮助理解插值在数据处理中的应用。
摘要由CSDN通过智能技术生成


在机器人控制控制过程中,当我们规划频率太低(规划的点时间间隔太大),而控制底层需要较高的控制频率,这时往往通过插值的方式实现低频率到高频率的转换。常用的插值函数有线性插值、梯形插值、三次多项式插值、五次多项式插值、拉格朗日插值、三次样条插值等,其中常用的是三次样条插值和五次多项式插值。自己编写插值函数难度也不是特别大,我将在“协作机器人控制栏”如何自己编写插值函数,但是对于小白或想快速编写插值函数,我们可以直接调用Scipy中的插值模块实现。

导入插值模块

可以通过下面方法导入插值模块

#导入插值模块
from scipy import interpolate

通过查询interpolate/interpolate.py文件,可以知道插值函数包括一维插值、二维插值、样条插值等

__all__ = ['interp1d', 'interp2d', 'spline', 'spleval', 'splmake', 'spltopp',
           'ppform', 'lagrange', 'PPoly', 'BPoly', 'RegularGridInterpolator',
           'interpn']

一维插值函数interp1d

使用interp1d一维插值函数是指单变量函数,给定一维自变量x和因变量y,创建一个连续函数f,通过函数f(new_x)求取函数中对应的数值点。

y1 = interp1d(x, y, kind='linear')

第一个x参数x是自变量,第二个参数y是因变量,第三个参数 kind是阶次,分别有[‘zero’, ‘linear’, ‘quadratic’, ‘cubic’],零,线性,二次,立方等插值技术。

线面是代码实现

#!/usr/bin/env python
#-*-coding:utf-8-*-
#本文档用于scipy学习
#程序员:飞龙
#版权:哈尔滨工业大学(深圳)
#日期:2020年5月30号

import numpy as np
import matplotlib.pyplot as plt

#导入插值模块
from scipy.interpolate import interp1d

#生成数据
x = np.linspace(0, 1, 30)
y = np.sin(5*x) + np.cos(10*x)

#**一维插值函数***#
#零次插值
y0 = interp1d(x, y, kind='zero')
#一次插值
y1 = interp1d(x, y, kind='linear')
#二次插值
y2 = interp1d(x, y, kind='quadratic')
#三次插值
y3 = interp1d(x, y, kind='cubic')

#新变量
new_x 
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值