#定义插值函数 f = interpolate.interp1d(x,y,kind='cubic') # x代表已有的数据量少的数据 #y代表与已有的x对应的值 ##例如: x--pdr的时间 y--pdr的x轴的距离值
##调用插值函数f y_new = f(x_new) ##例如: x_new--yaw的时间 y--yaw时间对应的距离值
#插值方式选取 - nearest:最邻近插值法 - zero:阶梯插值 - slinear/linerar:线性插值 - quadratic/cubic:二阶和三阶B样条曲线
f = np.polyfit(x,y,n) --n--阶数 p = np.poly1d(f) y_new = p(x_new)
举例:
pdr_time = np.array(pdr.loc[:,0]) pdr_x =np.array(pdr.loc[:,1]) f1 = np.polyfit(pdr_time,pdr_x,10) p1 = np.poly1d(f1) print('p1 is :\n',p1) yvals = p1(pdr_time)
关于python出现ValueError: A value in x_new is below the interpolation range.的解决方法
这个问题是由于待插值的数据超出了用于拟合函数的数据的范围,无法完成超过范围的差值。
添加边界值,例如在pdr数据添加0时刻的初始值
参考链接