python

时间:2017-03-24 08:49:47

标签: python interpolation coefficients

我对编程很新,我想我会尝试编写分段线性插值函数。 (可能用numpy.interp或scipy.interpolate.interp1d完成)

我说我的数据如下:x = [1,2.5,3.4,5.8,6] y = [2,4,5.8,4.3,4]

我想设计一个分段插值函数,它将使用Python给出所有线性多项式部分的系数在1到2.5之间,2.5到3.4之间等等。 当然matlab有interp1函数可以做到这一点,但我使用python,我想做与matlab完全相同的工作,但python只给出了valuse但不是线性多项式系数! (在matlab中我们可以用pp.coefs来获得这个)。 但是如何在python numpy.interp中获取pp.coef?

2 个答案:

答案 0 :(得分:0)

如果您正在进行线性插值,则只需使用从(x0, y0)(x1, y1)的直线的公式,即插入它们的直线由y - y0 = ((y0 - y1)/(x0 - x1)) * (x - x0)给出。您可以使用切片语法获取列表的2个元素切片;例如,获取[2.5, 3.4]您将使用x[1:3]

然后使用切片语法,您可以实现线性插值公式来计算线性多项式插值的系数。

答案 1 :(得分:0)

您可以使用polyfit中的numpy,它为您提供系数列表,从最高度(此处有两个系数1多项式)为给定拟合。因此,下面将为您提供每个细分[1, 2.5][2.5, 3.4]等的系数列表

import numpy as np

x = np.array(x)
y = np.array(y)

[np.polyfit(x[i:(i+2)], y[i:(i+2)],1) for i in range(len(x)-1)]
#[array([ 1.33333333,  0.66666667]), array([ 2., -1.]), array([-0.625,  7.925]), array([ -1.5,  13. ])]