gpt4 book ai didi

matlab - 具有 'cubic' 插值方法的 Griddata 返回 NaN

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:22 31 4
gpt4 key购买 nike

我发现如果我使用 griddata方法用Cubic插值法,对于xy的某些值,会返回NaNOne post说这是因为 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'});

最佳答案

如果您的点位于凸包之外,则您无法使用 cubic 选项从 griddata 中获得 NaN 以外的结果。如果该点正好在线上,则可能会产生 NaN,具体取决于计算的最低有效位中发生的情况。

问题在于三次方方法使用三角剖分。如果您的点位于凸包之外,则该点的三角剖分失败。

当然,您可以使用 -v4 方法,但有充分的理由说明它在很大程度上已被取代。它使用基于距离的插值方法,其中对于 n 个数据点,必须生成一个完整的 nxn 矩阵。然后使用该矩阵求解方程组。即使对于中等规模的问题,这也会非常缓慢。

-v4 方法的优点是它可以顺利推断而不会产生 nans。这就是它留在那儿的原因。

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

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

关于matlab - 具有 'cubic' 插值方法的 Griddata 返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650449/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com