x 范围包含在另一条曲线的 x 范围内的插值曲线 (Python)
Interpolating curves whose x ranges are contained in the x range of another curve (Python)
我有两组数据点,set1
和 set2
,每个数据点包含两列 x
和 y
值,就像这样(对于一个其中,另一个具有相似的结构和值)
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
又是随机的。 set3
的x
中的范围比set1
和set2
宽得多。
我的目标是在 x 中拥有跨越相同范围的三个集合。
为此,我想插入两个较短的集合,set1
和 set2
,它们的 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
的情节看起来好像这不是要走的路。值太高,比应有的值大很多个数量级。
有什么想法吗?
按照你对我的评论的回答并假设你正在寻找外推法而不是内插法:
基本上,您正在创建不存在的信息。任何推断都是基于您对 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
.
绘制结果
我有两组数据点,set1
和 set2
,每个数据点包含两列 x
和 y
值,就像这样(对于一个其中,另一个具有相似的结构和值)
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
又是随机的。 set3
的x
中的范围比set1
和set2
宽得多。
我的目标是在 x 中拥有跨越相同范围的三个集合。
为此,我想插入两个较短的集合,set1
和 set2
,它们的 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
的情节看起来好像这不是要走的路。值太高,比应有的值大很多个数量级。
有什么想法吗?
按照你对我的评论的回答并假设你正在寻找外推法而不是内插法:
基本上,您正在创建不存在的信息。任何推断都是基于您对 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
.