我对编程很新,我想我会尝试编写分段线性插值函数。 (可能用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?
答案 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. ])]