带有'立方'插值方法的网格数据返回NaN

Gra*_*ton 4 matlab

我发现,如果我使用的griddata方法与Cubic插值方法,对某些价值观x,y,它将返回NaN.一篇文章说这是因为xy数据非常靠近凸壳.

知道如何解决这个问题吗?

编辑:请注意,我无法确保我的输入单调增加(因此,gridfit不起作用).原因是因为我必须对我的区域进行网格划分(可能是2D中的不规则多边形),在Z为每个点生成相应的值之前获取所有点.我的代码如下:

function ZI=Interpolate3D(scatteredData, boundary)
%scatteredData is the scattered points, boundary is the area that I want to generate 3D surface.



% Given the boundaries, generate mesh first 
[element,points]= GenMesh(boundary);
ZI = griddata(scatteredData(:,1),scatteredData(:,2),scatteredData(:,3),points(:,1),points(:,2), 'cubic',{'QJ'});
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您的点位于凸包外,则无法使用立方选项从griddata获得除NaN以外的结果.如果该点在该行上,则可能导致NaN,这取决于计算的最低有效位中发生的情况.

问题是立方法使用三角测量.如果你的点位于凸包外面,那么三角测量就会失败.

当然,你可以使用-v4方法,但是有很多很好的理由可以解释为什么它在很大程度上被取代了.它使用基于距离的插值方法,其中对于n个数据点,必须生成完整的nxn矩阵.然后使用该矩阵求解方程组.即使是中等大的问题,这也会非常缓慢.

-v4方法的优点是它可以平滑地推断而不产生nans.这就是它留在那里的原因.

对于需要平滑结果的较大问题,并且您仍希望在凸包外部进行外推,可以使用我的gridfit工具.它确实做了平滑,而不是纯插值.

所有这些方法都需要权衡,您必须针对特定问题解决这些问题.