我生成了两个样条(我对其进行了一些修改)getcurve()
代表了轨迹的XY
和XZ
。我想将两个样条组合在一起,通过plot3()
生成一个三维图。我修改了getcurve()
以输出绘图上绘制的线的XData
和YData
。
由于样条曲线是以图形方式生成的,因此XY
和XZ
之间的元素数量不一定相同。假设length(XY)>length(XZ)
。我正在尝试创建一个新的向量XZ_2
,其长度与XY
相同,并且与XY
具有相同的x值。
我的第一个想法是插值如下:
XZ_2(:,2) = interp1(XZ(:,1), XZ(:,2), XY(:,1))
但是我收到了错误:
Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.
Error in interp1 (line 191)
F = griddedInterpolant(X,V,method);
样条线XZ
如下所示:
我不明白为什么我不能在给定此样条曲线的情况下进行插值。它看起来并不特别。您可以通过执行以下操作自行重建此样条曲线(您需要曲线拟合工具箱):
>> xz = [0.0288 0.0518 0.1071 0.1763 0.2707 0.3583 0.4988 0.5864 0.7339 0.8191 0.9182 0.9781
1.8070 1.3626 0.9766 0.4152 -0.0643 -0.3684 -0.9181 -1.1637 -1.4795 -1.6667 -1.8070 -1.9474];
>> fnplt(cscvn(xz));
有没有办法“调整大小”XZ
使用与XY
相同的x值?我知道当我这样做时,有关XZ
的一些信息会丢失,但这没关系。
答案 0 :(得分:3)
它表示在interp1(x, y, xi);
中,x
和xi
必须单调递增,即排序。