我对编程还很陌生,并认为我会尝试编写一个分段线性插值函数。 (也许这是用 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 只给出值而不是线性多项式系数! (在 matlab 中我们可以用 pp.coefs 得到这个)。
但是如何在 python numpy.interp 中获取 pp.coefs 呢?
最佳答案
您可以使用 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. ])]
关于python - python中的分段线性插值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42995027/