曲线样条(python)

2024-10-01 15:45:57 发布

您现在位置:Python中文网/ 问答频道 /正文

给定二维平面上的一系列点,[(x0,y0), (x1,y1), ...],我想找到一个穿过这些点的spline curve。在

1D spline的^{}中的类需要增加x,因为这些{}-坐标的列表不需要增加(即曲线不是函数,f(x)=y,而是参数化曲线)。不幸的是,这两个函数都不是y上的函数(否则通过切换x和y坐标,问题很容易解决)。

我尝试过单变量插值类,但这并没有达到预期的效果。如何使用scipy.interpolate来计算这条样条曲线?在


Tags: 函数列表参数scipy曲线平面插值spline
1条回答
网友
1楼 · 发布于 2024-10-01 15:45:57

您需要重新考虑如何看待这个问题:实际上x是曲线的参数化(通常用t表示时间),而{}是{}坐标:

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)

然后可以使用各种^{}函数,例如:

^{2}$

一。在

例如(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])

相关问题 更多 >

    热门问题