1

私は次のコードを使用しています:

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 は、-28 や -29 ではなく、正の 0.30 付近の値を持つ必要があります。

4

1 に答える 1

2

渡した x の値splrepは 80 から 115 の範囲です。0 から 1 の範囲の値でスプラインを評価しています。入力範囲内の値で評価すると、出力は約 0.3 になります。

于 2014-09-13T21:05:40.387 に答える