代码之家  ›  专栏  ›  技术社区  ›  Graviton

使用“立方”插值方法的Griddata返回NaN

  •  4
  • Graviton  · 技术社区  · 14 年前

    我发现如果我用 griddata 方法 Cubic 插值法,对于 x , y ,它会回来的 NaN . One post 说这是因为 y

    你知道怎么解决吗?

    gridfit 不起作用)。原因是,我将不得不网格我的地区(这可能是一个不规则的多边形在二维),得到所有的点之前生成的核心 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'});
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   user85109 user85109    14 年前

    如果点位于凸包之外,则无法使用“立方”选项从griddata获得除NaN以外的结果。如果该点正好在该行上,则可能会产生一个NaN,这取决于计算的最低有效位中发生了什么。

    问题是立方方法使用三角剖分。如果你的点在凸包外,那么三角剖分在该点上失败。

    v4方法的优点是它可以在不产生NAN的情况下平滑地进行外推。这就是为什么它被留在那里。

    gridfit 工具。它确实做平滑处理,而不是纯插值。

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

        2
  •  1
  •   CheshireCat    6 年前

    自MatlabR2013A发布以来,您可以使用 scatteredInterpolant 而不是 griddata 这有几个优点:

    • 散射干扰 对象。您可以在散乱数据的凸包外指定一个点,但仍然无法获得NaN。

    • 一经创建 对象可以多次求值,因此与调用相比节省了计算时间 好几次。

    缺点:虽然可以指定插值和外推方法, cubic linear , nearest natural

    散射干扰

    F = scatteredInterpolant(scatteredData(:,1),scatteredData(:,2),scatteredData(:,3));
    ZI=F(points(:,1),points(:,2));
    
        3
  •  0
  •   Mikhail Poda    14 年前

    你确定要三次插值吗?对于某些输入数据,计算出的z节点可能具有非常大的值!

    我总是用 -v4 {'Qt','Qbb','Qc'} http://www.qhull.org/html/qhull.htm