如何“拉伸”(插入)数组但保持其基础数据完好无损?

时间:2013-05-09 20:27:12

标签: matlab

我生成了两个样条(我对其进行了一些修改)getcurve()代表了轨迹的XYXZ。我想将两个样条组合在一起,通过plot3()生成一个三维图。我修改了getcurve()以输出绘图上绘制的线的XDataYData

由于样条曲线是以图形方式生成的,因此XYXZ之间的元素数量不一定相同。假设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 spline

我不明白为什么我不能在给定此样条曲线的情况下进行插值。它看起来并不特别。您可以通过执行以下操作自行重建此样条曲线(您需要曲线拟合工具箱):

>> 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的一些信息会丢失,但这没关系。

1 个答案:

答案 0 :(得分:3)

它表示在interp1(x, y, xi);中,xxi必须单调递增,即排序。