【问题标题】:scipy.interpolate.splrep giving incorrect interpolation for b-splinescipy.interpolate.splrep 为 b 样条提供不正确的插值
【发布时间】:2014-11-07 16:41:17
【问题描述】:

我正在使用以下代码:

x = [80, 85, 90, 95, 100, 105, 110, 115]
y = [0.31976258043267208, 0.31718670335264199, 0.30116311412953689, 0.29687766899837931, 0.29802720516866577, 0.30707962224836099, 0.32328422706655086, 0.34467623793716823]

bSpline = scipy.interpolate.splrep(x, y, k=3)
yInterp = scipy.interpolate.splev(np.linspace(0,1,num=8), bSpline)

但是 bSpline 有奇怪的结(有些是 0)然后 yInterp 都搞砸了:

 bSpline: (array([  80,   80,   80,   80,   90,   95,  100,  105,  115, 115,  115,  115 ]), array([ 0.31976258,  0.33015199,  0.29797999,  0.29680536,  0.29635823,
    0.30911387,  0.32907255,  0.34467624,  0,  0, 0,  0 ]), 3)
 yInterp: [-29.46356522 -29.3160613  -29.16904367 -29.02251153 -28.87646408, -28.73090053 -28.58582008 -28.44122191]

yInterp 的值应该在正 0.30 左右,而不是 -28 和 -29

【问题讨论】:

  • 您传递给 x 的值范围为 80 到 115。您正在评估从 0 到 1 的值。如果您评估输入范围内的值,则输出将在 0.3 左右。
  • 啊,是的,这太愚蠢了!如果你想添加答案,我可以接受
  • 评论现在是一个答案。

标签: scipy interpolation bspline


【解决方案1】:

您传递给splrep 的 x 值的范围是 80 到 115。您正在评估从 0 到 1 的值的样条曲线。如果您在输入范围内的值进行评估,输出将在 0.3 左右。

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 2014-08-28
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2017-04-21
    相关资源
    最近更新 更多