Python的三维样条曲线
我正在寻找一个函数,模仿MATLAB的曲线拟合工具箱,适用于三维空间的点。我发现的最接近的函数是,它能够计算三维空间,但由于数据点较少而失去了准确性。如果平滑度降低到拟合点的程度,则曲线会出现扭曲 我有一个由物理点(高程数据)组成的离散数据集,我希望对其进行建模,因此样条曲线必须通过这些点。在彼此不同的弦长上有有限数量的点 下面是我为测试Python样条线而编写的快速测试函数的示例。不幸的是,我无法共享我的MATLAB代码,但是Python的三维样条曲线,python,matlab,scipy,curve-fitting,spline,Python,Matlab,Scipy,Curve Fitting,Spline,我正在寻找一个函数,模仿MATLAB的曲线拟合工具箱,适用于三维空间的点。我发现的最接近的函数是,它能够计算三维空间,但由于数据点较少而失去了准确性。如果平滑度降低到拟合点的程度,则曲线会出现扭曲 我有一个由物理点(高程数据)组成的离散数据集,我希望对其进行建模,因此样条曲线必须通过这些点。在彼此不同的弦长上有有限数量的点 下面是我为测试Python样条线而编写的快速测试函数的示例。不幸的是,我无法共享我的MATLAB代码,但是cscvn函数平滑地进行样条拟合,并通过所有数据点 import s
cscvn
函数平滑地进行样条拟合,并通过所有数据点
import scipy as sp
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import splprep, splev, interp2d
x = np.linspace(0, 10, num = 20) #list of known x coordinates
y = 2*x #list of known y coordinates
z = x*x #list of known z coordinates
## Note: You must have more points than degree of the spline. if k = 3, must have 4 points min.
print([x,y,z])
tck, u = splprep([x,y,z], s = 26) # Generate function out of provided points, default k = 3
newPoints = splev(u, tck) # Creating spline points
print(newPoints)
ax = plt.axes(projection = "3d")
ax.plot3D(x, y, z, 'go') # Green is the actual 3D function
ax.plot3D(newPoints[:][0], newPoints[:][1], newPoints[:][2], 'r-') # Red is the spline
plt.show()
下面是一个多点创建平滑曲线(红色)的示例,但该线与物理数据点(绿色)不对齐
以下是由太少的数据点(绿色)创建的样条曲线(红色)中的扭结示例。这与我的数据集看起来更相似
将U更改为:
unew=np.arange(0,1.00,0.005)欢迎来到StackOverflow,到目前为止您做了什么?你能分享你的代码吗?我添加了一些额外的代码detail@SardarUsama代码以文本形式共享