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));