У меня есть следующий фрагмент кода. Он генерирует трехмерный кубический сплайн заданной трехмерной функции, заданной в параметрической форме. Я в значительной степени адаптировал это к своему случаю, используя онлайн-документацию для 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 и т. Д.?
Я совершенно не понимаю документацию здесь. Может кто меня просветит, может на примерах?