【发布时间】:2019-05-08 11:19:12
【问题描述】:
我的问题很简单,但是我似乎找不到快速的解决方案。
我想插入在x_model 坐标处定义的y_model 数组
x_model = np. array([ 400., 425., 450., 475., 500., 525., 550., 575., 600.,
625., 650., 675., 700.])
y_model = np.array([ 3.30395705e-03, 3.07586379e-03, 2.90207925e-03,
2.81385536e-03, 2.78152394e-03, 2.14072505e-03,
1.64075861e-03, 9.81255709e-04, 3.61950352e-04,
2.15834081e-04, 1.35457654e-04, 8.22104550e-05,
5.84126935e-05])
到新的,x_data 坐标:
x_data = np.array([412., 443., 490., 510., 555., 670.])
所以我应该得到一个包含 6 个元素的简单一维 y-data 数组。
我想到了这样的事情,你怎么看?
from scipy import interpolate
f = interpolate.interp1d(x_model, y_model, kind = 'linear')
y_data = f(x_data)
最初是根据主要提出的问题寻求解决方案,将问题限制为线性插值。 然而,在讨论过程中,一些作者正确地指出,对于这样的问题,线性拟合是不够的。
非线性曲线拟合应该更合适吗?
【问题讨论】:
-
有理由不使用最小二乘拟合吗?您似乎正在寻找比线性拟合所需的更复杂的方法。
-
实际问题是什么?你遇到问题了吗?
-
不,最小二乘可能会更好,你是对的@allo
-
@MadPhysicist,我一直在寻找最合适的(数学和编程方面)方法来解决这个看似简单的问题。在更复杂的情况下,线性插值可能会失败,所以我得到了一些很好的建议,使其在数学上更正确
-
我将其添加为答案并链接了包含简单插值示例的文档。
标签: python arrays numpy scipy interpolation