我正在尝试创建一个适合我输入的点的三维样条曲线。我目前的解决方案创建了输入数据的最小二乘拟合,但我需要一个与我输入的每个数据点相交的样条。这是我现在的代码:
import numpy as np
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt
numpoints = 15
x = np.linspace(0, 10, numpoints)
y = np.cos(x)
z = x
tck, u = splprep([x, y, z], s=0.5)
new_points = splev(u, tck)
fig, ax = plt.subplots()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z, 'r.')
ax.plot(new_points[0], new_points[1], new_points[2], 'r-')
plt.show()
这导致该图:Current 3D spline graph
这里的样条图有点块状,不光滑,并且不相交于每个点。我不需要输出来近似输入函数,我只需要它是平滑的,并且与每个点相交。我还需要能够迭代样条的点。
这个解决方案是使用scipy.interpolate.splprep和splev,但是我正在寻找一个不同的函数库,可以完成我所寻找的。
1条答案
按热度按时间hmae6n7t1#
也许是这个https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.make_interp_spline.html