我尝试在 Matlab 的 3D 空间中连接几个点(有时是几千个)。轨迹可以沿任何方向前进,在任何维度上向前和向后。我希望得到五阶的结果,因为轨迹的二阶导数在其二阶导数中不能有任何故障。
matlab spline() 函数的问题是,每个 x 值必须始终只有一个 y 值。我尝试了一个简单的 2D 示例,即无穷大符号 ( Lemniscate )。
t = pi*[0:.1:2]; a = 1;
for i=1:size(t,2)
x(i) = a*sqrt(2)*cos(t(i))/(sin(t(i)).^2+1);
y(i) = a*sqrt(2)*cos(t(i))*sin(t(i))/(sin(t(i))^2+1);
end
这给我带来了 21 分,如果连接起来应该看起来像双纽线。
现在更改第一行,计算样条曲线并添加绘图
t = pi*[-1:.1:0];
[..]
xx = x(1):.1:x(end);
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
这导致以下情节。如您所见,这非常有效。但如前所述,问题是,这只适用于 x(i) < x(i+1)
所以现在这导致了以下问题:
Matlab 样条函数是否适合我的问题?关于它需要在五阶导数中是连续的这一事实,是否可以解决有时我需要在各个方向的每个维度上进行的问题?
如果不是,那该怎么走?B样条线的问题是,它们没有通过输入点。一位朋友提到我应该使用五阶多项式并将它们连接起来。他说我需要为每个维度分别做这件事。有人可以向我解释吗?
谢谢你的帮助!