我有以下一段代码。它生成以参数形式给出的给定 3-D 函数的 3-D 三次样条。我使用splprep和splev的在线文档非常适合我的情况。
但是我有一些我不明白的地方。这是代码:
%matplotlib inline
from numpy import arange, cos, linspace, pi, sin, random
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt
# make ascending spiral in 3-space
t=linspace(0,1.75*2*pi,100)
x = sin(t)
y = cos(t)
z = t
# spline parameters
s=3.0 # smoothness parameter
k=3 # spline order
nest=-1 # estimate of number of knots needed (-1 = maximal)
# find the knot points
tck,u = splprep([x,y,z],s=s,k=k,nest=-1)
# evaluate spline, including interpolated points
xnew,ynew,znew = splev(linspace(0,1,400),tck)
关于这个实现,我有几个问题。
在这种情况下,元组究竟
(t,c,k)
返回了什么?我阅读了文档,它说它返回了节点、系数和样条曲线的度数。结点不是必须是 (x, y, z) 形式的坐标吗?所以我们必须有"number of knots"
这样的坐标点。但这不是返回的。我们只是返回一个数组length 11
。返回什么
u
?(文档说它返回参数的值。这是什么意思?参数的值t
?当我使用nest = -1(这是默认值)时,它使用所需的最大结点数(在这种情况下,它们使用
11
结点)。但是我如何指定我自己的结点数,比如 50 或 80 等?
我完全误解了这里的文档。有人可以启发我使用示例吗?