30.4离散数据插值

Delaunay三角剖分的一个重要用途是,它可以用于将离散的数据插值到任意的点集。要计算已知点集的N-单纯形,使用delaunaydelaunayn,然后识别出包含所需点的单纯形。最后,使用单纯形的顶点对所需点进行插值。执行此插值的函数为griddatagriddata3griddatan

 
zi = griddata (x, y, z, xi, yi)
zi = griddata (x, y, z, xi, yi, method)
[xi, yi, zi] = griddata (…)
vi = griddata (x, y, z, v, xi, yi, zi)
vi = griddata (x, y, z, v, xi, yi, zi, method)
vi = griddata (x, y, z, v, xi, yi, zi, method, options)

在指定点对不规则二维和三维源数据进行插值。

对于二维插值,输入xy定义函数z = f (x, y)的求值点。输入xyz可以是长度相同的向量,也可以将长度不同的向量xy通过meshgrid扩展为二维网格,此时z是与生成的X-Y网格大小匹配的二维矩阵。

插值点为xiyi。如果xiyi是行向量而另一个是列向量,则使用meshgrid (xi, yi)创建插值点网格。

对于三维插值,输入xyz定义函数v = f (x, y, z)的求值点。输入xyz可以是长度相同的向量,也可以将长度不同的向量通过meshgrid扩展为三维网格。输入v的大小必须与原始数据的大小匹配,可以是向量或矩阵。

可选的输入插值方法method可以是"nearest"(最近邻)、"linear"(线性)或二维数据专用的"v4"方法。当方法为"nearest"时,输出vi将是原始数据中距离查询点xiyizi最近的点。当方法为"linear"时,输出vi将在每个维度上对原始源数据中两个最近点进行线性插值。仅对于二维情况,"v4"方法实现双调和样条插值。如果省略method或为空,则默认为"linear"。

对于三维插值,可选参数options在计算用于插值的Delaunay三角剖分时直接传递给Qhull。有关默认值以及如何传递不同值的信息,请参阅delaunayn

编程注意事项:如果输入是复数,则分别对实部和虚部进行插值。插值通常基于Delaunay三角剖分。输入点凸包之外的任何查询值将返回NaN。但是,"v4"方法不使用三角剖分,并且会返回原始数据之外的值(外推)。

另请参阅: griddata3griddatandelaunay

另请参阅: griddata3, griddatan, delaunay.

 
vi = griddata3 (x, y, z, v, xi, yi, zi)
vi = griddata3 (x, y, z, v, xi, yi, zi, method)
vi = griddata3 (x, y, z, v, xi, yi, zi, method, options)

在指定点插入不规则的三维源数据。

输入x, yz定义函数所在的点v = f (x, y, z)估计。输入的x, y, z是长度相同的向量,或者是长度不等的向量,则将它们扩展为meshgrid网格.输入的大小v必须匹配理论原始数据的大小,无论是向量还是矩阵。

插值点从xi, yi, zi指定.

可选的输入插值method可以是"nearest""linear"。当方法为"nearest",输出vi将是原始数据中最接近的点(x, y, z)到查询点(xi, yi, zi). 当方法为"linear",输出vi将是每个维度中原始源数据中最接近的两个点之间的线性插值。如果method被省略或为空,默认为"linear".

可选参数options在计算用于插值的Delaunay三角剖分时,直接传递给Qhull。另请参阅delaunayn有关默认值以及如何传递差值的信息。

编程注意事项:如果输入是复数,则实数部分和虚数部分分别进行插值。插值基于Delaunay三角剖分,输入凸包之外的任何查询值都将返回NaN.

另请参阅: griddata, griddatan, delaunayn.

 
yi = griddatan (x, y, xi)
yi = griddatan (x, y, xi, method)
yi = griddatan (x, y, xi, method, options)

插值不规则源数据x, y在指定的点xi.

输入x是表示N维空间中的M个点的MxN矩阵。输入y是表示在点x处估计的函数的single值列向量(Mx1)。即,y = fcn (x).输入xi是函数输出的点yi的列表,应该通过插值来近似。xi的列数必须与(N)和x相同,使得维度匹配。

可选的输入插值method可以是"nearest""linear"。当方法为"nearest",输出yi将是原始数据中最接近的点x到查询点xi。当方法为"linear",输出yi将是原始源数据中两个最近点之间的线性插值。如果method被省略或为空,默认为"linear".

可选参数options在计算用于插值的Delaunay三角剖分时,直接传递给Qhull。另请参阅delaunayn有关默认值以及如何传递差值的信息。

用例

## Evaluate sombrero() function at irregular data points
x = 16*gallery ("uniformdata", [200,1], 1) - 8;
y = 16*gallery ("uniformdata", [200,1], 11) - 8;
z = sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2);
## Create a regular grid and interpolate data
[xi, yi] = ndgrid (linspace (-8, 8, 50));
zi = griddatan ([x, y], z, [xi(:), yi(:)]);
zi = reshape (zi, size (xi));
## Plot results
clf ();
plot3 (x, y, z, "or");
hold on
surf (xi, yi, zi);
legend ("Original Data", "Interpolated Data");

编程注意事项:如果输入是复数,则实数部分和虚数部分分别进行插值。插值基于Delaunay三角剖分,输入凸包之外的任何查询值都将返回NaN。对于二维和三维数据,可以使用griddata作用

另请参阅: griddata, griddata3, delaunayn.

griddata函数的使用示例为

rand ("state", 1);
x = 2*rand (1000,1) - 1;
y = 2*rand (size (x)) - 1;
z = sin (2*(x.^2+y.^2));
[xx,yy] = meshgrid (linspace (-1,1,32));
zz = griddata (x, y, z, xx, yy);
mesh (xx, yy, zz);

从点的随机离散插值到均匀网格。上面的输出可以在中看到图30.6.

griddata

图30.6:从离散数据到规则网格的插值


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4