0

我有两组数据点,set1并且set2,每组都包含两列xy值,就像那样(对于其中一个,另一个具有相似的结构和值)

x            y

0.015        0.01
0.025        0.015
..           ..
0.115        0.07

这样我们就有了一个x按步长缩放的轴0.01,而y它是随机的。然后我有第三组,set3看起来像这样

x           y

0.025       0.2
0.075       0.1
...         ...
3.475       0.005

所以增量又x是恒定的,在这种情况下等于0.05,而y是随机的。的范围xset3和 宽set1得多set2

我的目标是在 x 中拥有三个跨越相同范围的集合。

为此,我想插入两个较短的集合,set1set2,其 x 范围包含在set3的一个中。

我做到了(set1例如,类似地set2),使用

import scipy.interpolate as itp
spline_set1 = itp.splrep(xvalues_set1, yvalues_set1)
extended_set1 = itp.splev(xvalues_set3, spline_set1)

但是extended_set1看起来好像这不是要走的路。这些值太高了,比它们应该的大很多数量级。

有任何想法吗?

4

1 回答 1

0

按照您对我的评论的回答并假设您正在寻找外推而不是插值:

基本上,您正在创建不存在的信息。任何推断都是基于您对 的 相关行为的y了解x。在这种情况下,y3 值并不重要(这就是您在自己的解决方案中不需要它们的原因)。

样条插值的基本工具是scipy.interpolate.UnivariateSpline或类似的scipy.interpolate.CubicSpline。两者都能够推断。在你的情况下,它是这样工作的:

import scipy.interpolate as itp
spline = itp.UnivariateSpline(xvalues_set1, yvalues_set1)
extended_set1 = spline(xvalues_set3)

然而,结果可能仍然值得怀疑。样条外推的行为可能看起来不合理,但在数学上仍然是正确的。如果您想了解发生了什么,我建议您使用matplotlib.pyplot.

于 2017-09-18T12:32:05.953 回答