Matlab “我该怎么做?”;“伸展”;(插值)数组,但保持其基础数据完整?

Matlab “我该怎么做?”;“伸展”;(插值)数组,但保持其基础数据完整?,matlab,Matlab,我有两条样条曲线,是我用getcurve()生成的(稍加修改),它们表示轨迹的XY和XZ。我想通过plot3()将两条样条曲线组合在一起,以生成三维绘图。我修改了getcurve() 由于样条曲线是以图形方式生成的,因此XY和XZ之间的元素数量不一定相同。假设长度(XY)>长度(XZ)。我正在尝试创建一个新的向量XZ_2,它的长度与XY相同,x值与XY相同 我的第一个想法是插入如下内容: XZ_2(:,2) = interp1(XZ(:,1), XZ(:,2), XY(:,1)) 但我有一个错

我有两条样条曲线,是我用
getcurve()
生成的(稍加修改),它们表示轨迹的
XY
XZ
。我想通过
plot3()
将两条样条曲线组合在一起,以生成三维绘图。我修改了
getcurve()

由于样条曲线是以图形方式生成的,因此
XY
XZ
之间的元素数量不一定相同。假设
长度(XY)>长度(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
的大小以使用与
XY
相同的x值?我意识到当我这样做时,一些关于
XZ
的信息会丢失,但这没关系。

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

它必须递增吗?我认为它一定是单调的。虽然我想OP的图回答了我的问题。
x
xi
必须增加,
y
是不相关的。考虑{x,y}作为时间序列。我发现了一个重复的值。啊!使用MATLAB文件交换帮助解决了这个问题。你不能跳过这一点,直接使用interp2进入3D吗?我可以吗?我想
interp2
可以让你在曲面上插值。我不太明白如何用它来生成曲线而不是曲面。哦,对不起,我以为你想把这两条曲线组合成一个曲面
>> 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));