2014-09-13 46 views
1

我用下面的代碼:scipy.interpolate.splrep給予不正確插值B樣條

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) 

但B樣條具有怪異節(有些是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

+0

您傳遞給'splrep'的'x'值範圍從80到115.您正在評估樣條的值,範圍從0到1.如果您在輸入範圍內的值進行評估,則輸出將爲0.3左右。 – 2014-09-13 18:39:44

+0

啊,這太愚蠢了!如果你想添加一個答案,我可以接受它 – user1387717 2014-09-13 19:16:06

+0

評論現在是一個答案。 – 2014-09-13 21:06:48

回答

2

,你傳遞給splrep範圍從80到115您正在評估的花鍵的x值取值範圍從0到1.如果您在輸入範圍內的值處進行評估,則輸出將在0.3左右。