def set_values(self, values, points = None):
"""Calculate the bspline parameter for the given values and sample points
Arguments:
values (array): values of data points
points (array or None): sample points for the data values, if None use internal points or linspace(0,1,values.shape[0])
"""
values = np.array(values, dtype = float);
#set points
if points is None:
if self._points is None:
self.set_points(values.shape[0]);
else:
self.set_points(points);
if values.shape[0] != self._points.shape[0]:
raise ValueError('number of values %d mismatch number of points %d' % (values.shape[0], self._points.shape[0]));
#set parameter from values
if self.with_projection and self.projection_inverse is not False:
self._parameter = self._projection_inverse.dot(values);
self._values = values;
else:
tck = splrep(self._points, values, t = self._knots, task = -1, k = self.degree);
self._parameter = tck[1][:self._nparameter];
# values changed
self._values = None;
#self._values = values; #fast but imprecise as values on spline due approximation might differ!
评论列表
文章目录