你需要重新考虑你如何看待这个问题:其实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