2

我有两个样条线,我用(稍微修改一下)生成了一条曲线,getcurve()它们代表一个XYXZ一个轨迹。我想将两条样条曲线组合在一起以生成 3d 图,通过plot3(). 我修改getcurve()以输出绘图上绘制的线的XData和。YData

XY由于样条曲线是以图形方式生成的,因此和之间的元素数量不一定相同XZ。假设length(XY)>length(XZ)。我正在尝试创建一个XZ_2与 具有相同长度XY且具有相同 x 值的新向量XY

我的第一个想法是插值如下:

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 样条

我不明白为什么我不能根据这个样条插值。看起来没什么特别的。您可以通过执行以下操作自己重建此样条曲线(您需要曲线拟合工具箱):

>> 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以使用与 相同的 x 值XY?我意识到当我这样做时一些信息XZ会丢失,但没关系。

4

1 回答 1

3

它说在 中interp1(x, y, xi);xxi必须是单调递增的,即已排序。

于 2013-05-09T20:54:20.523 回答