你需要重新考慮你如何看待這個問題:其實x
是曲線(其中一個通常會表示t
時間)和y
的參數設置是x,y
統籌:
L = [(x0,y0), (x1,y1), ...]
X = numpy.array(L).T
# Equivalently (but less generally):
# X = [[P[0] for P in L], [ P[1] for P in L ]]
t,X = enumerate(L) # here t[0]==0 and X[0]==(x0,x1,..), X[1]==(y0,y1,..)
# or to name in a more confusing manner but match the docs: x,y = enumerate(L)
然後您可以使用各種功能,例如:
f = scipy.interpolate.interp1d(t, X)
。
例如直線(0,0)
和(1,1)
之間:
f = interp1d((0,1), numpy.array([[0,0],[1,1]]).T)
# (t0,t1) numpy.array([[x0,y0],[[x1,y1]]).T
# (t0,t1) [[x0,x1],[[y0,y1]]
f(0.5) # array([ 0.5, 0.5])
我建議第一次嘗試的工作出了問題的數學。一旦你完成了,然後找出如何在你的程序中實現它。 –
這個問題很簡單,我在2D平面中有一系列點,我想要找到通過這些點的樣條曲線。我的問題是x座標列表不必要增加(即曲線不是一個函數,從數學上講)。不幸的是,它甚至不是一個函數,否則通過切換x和y座標就可以輕鬆解決問題。 scipy.interpolate爲1-d樣條的類需要增加x。我曾嘗試使用單變量插值類,但結果並不理想。有人有一些建議? – SirC
爲什麼結果不理想?顯然,它可行,但你有不同的期望。你的期望是什麼,目前的結果是什麼? (圖片,手繪素描等幫助。)我的觀點是,有時候,人們比純粹的數學例程能夠實現的期望更高。 – Evert