好的,我找到了上面“ pv”的一点修改的解决方案(请注意,splev仅适用于一维矢量)我最初遇到的“ tck,u =scipy.interpolate.splprep(data)”问题是至少需要4分才能工作(Matlab需要2分)。我当时使用了两点。增加数据点后,它可以按我的要求工作。
这是完整性的解决方案:
import numpy as npimport matplotlib.pyplot as pltfrom scipy import interpolatedata = np.array([[-1452.18133319 , 3285.44737438, -7075.49516676], [-1452.20175668 , 3285.29632734, -7075.49110863], [-1452.32645025 , 3284.37412457, -7075.46633213], [-1452.38226151 , 3283.96135828, -7075.45524248]])distance=np.array([0., 0.15247556, 1.0834, 1.50007])data = data.Ttck,u = interpolate.splprep(data, u=distance, s=0)yderv = interpolate.splev(u,tck,der=1)
和切线是(如果使用相同的数据,则匹配Matlab结果):
(-0.13394599723751408, -0.99063114953803189, 0.026614957159932656)(-0.13394598523149195, -0.99063115868512985, 0.026614950816003666)(-0.13394595055068903, -0.99063117647357712, 0.026614941718878599)(-0.13394595652952143, -0.9906311632471152, 0.026614954146007865)



