Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

griddatan

对 N 维散点数据插值

说明

示例

vq = griddatan(x,v,xq) 使 v = f(x) 形式的超曲面与值为 v 的样本点 x 拟合。griddatan 函数在 xq 指定的查询点对曲面进行插值并返回插入的值 vq。曲面始终穿过 xv 定义的数据点。

示例

vq = griddatan(x,v,xq,method) 指定用于计算 vq 的插值方法。选项为 "linear""nearest"

vq = griddatan(x,v,xq,method,options) 指定要通过 delaunayn 在 Qhull 中使用的字符向量元胞数组 options

示例

全部折叠

对四维散点数据集插值,然后可视化插值数据的三维等值面。

创建一个由样本点组成的散点集。

rng default
X = 2*rand([5000 3])-1;
Y = sum(X.^2,2);

创建 x、y 和 z 网格作为三维查询点集,然后在这些点处对散点数据插值。

d = -0.8:0.05:0.8;
[y0,x0,z0] = ndgrid(d,d,d);
XI = [x0(:) y0(:) z0(:)];
YI = griddatan(X,Y,XI);

由于很难可视化四维数据集,因此使用 0.8 处的 isosurface 可视化插值结果。

YI = reshape(YI, size(x0));
p = patch(isosurface(x0,y0,z0,YI,0.8));
isonormals(x0,y0,z0,YI,p)
p.FaceColor = "blue";
p.EdgeColor = "none";
view(3)
axis equal
camlight
lighting phong

Figure contains an axes object. The axes object contains an object of type patch.

对三维散点数据集使用最近邻点插值。

创建一个样本三维数据集。矩阵 X 包含观测数据的 xyz 位置,而 v 包含(随机生成的)观测数据。这种数据集可以表示,比如说,海水中这些位置的氧气水平。

rng default
X = [rand(100,1) rand(100,1) rand(100,1)];
v = rand(100,1);

使用最近邻点插值求基础函数在某些查询点的近似值。

[xx,yy,zz] = meshgrid(0:0.05:1);
xq = [xx(:) yy(:) zz(:)];
vq = griddatan(X,v,xq,"nearest");

在样本点位置的上方绘制结果的切片。

vq = reshape(vq,size(xx));
plot3(X(:,1),X(:,2),X(:,3),"r*")
hold on
slice(xx,yy,zz,vq,[0.3 0.6],0.5,0.5)
hold off

Figure contains an axes object. The axes object contains 5 objects of type line, surface. One or more of the lines displays its values using only markers

输入参数

全部折叠

样本点坐标,指定为矩阵。将 x 指定为 m×n 矩阵,以表示 n 维空间中的 m 个点。样本点必须唯一。

数据类型: double

样本值,指定为向量。将 v 指定为长度为 m 的向量,使 x 中指定的每个样本点(行)对应一个值。

如果 v 包含复数,则 griddatan 将分别对实部和虚部插值。

数据类型: single | double
复数支持:

查询点,指定为矩阵。将 xq 指定为 p×n 矩阵,以表示 n 维空间中的 p 个点。xq 通常基于 ndgrid 生成的均匀网格而创建。

数据类型: double

插值方法,指定为下表中的值之一。这些方法都基于输入数据的 Delaunay 三角剖分。

选项描述连续性
"linear"(默认值)基于三角剖分的线性插值。C0
"nearest"最近邻点插值。不连续

如果 method[],则 griddatan 使用默认的 "linear" 方法。

数据类型: char | string

Qhull 特定的选项,指定为元胞数组。要查看支持的选项列表,请参阅 Qhull 快速参考

如果 options[],则 griddatan 使用默认选项:

  • {'Qt' 'Qbb' 'Qc'}(对于二维和三维插值)。

  • {'Qt' 'Qbb' 'Qc' 'Qx'}(对于四维及更高维度的插值)。

如果 options{''},则 griddatan 不使用任何选项,甚至也不使用默认值。

数据类型: cell

输出参数

全部折叠

插入的值,以长度为 p 的向量形式返回。在 vq 中插入的值对应于 xq 中的查询点(行)。

提示

  • 在高于六维的维度中使用 griddatan 进行插值是不现实的,因为基本三角剖分所需要的内存随维数的增加呈指数级增长。

  • 使用 griddatan 进行的散点数据插值基于数据的 Delaunay 三角剖分,因此对 x 的缩放问题非常敏感。出现这种情况时,您可以使用 normalize 重新缩放数据并改进结果。有关详细信息,请参阅对不同量级的数据进行归一化

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅

| |