MATLAB散乱点插值函式,Python中的三维点插值。
griddata
数据格线化
语法
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[...] = griddata(...,method)
[...] = griddata(...,method,options)
说明
ZI = griddata(x,y,z,XI,YI) 调整形如z = f(x,y)的曲面,使之与非等间距矢量(x,y,z)中的数据吻合。griddata 函式在指定的(XI,YI)点处插补此曲面,生成ZI. 此曲面一定通过这些数据点。 XI 和 YI 通常构成均匀格线(与meshgrid函式生成的相同). XI 可以是行矢量,这种情况下该矢量确定一个具有固定列数的矩阵。与之类似,YI 可以是列矢量,确定一个具有固定行数的矩阵。
[XI,YI,ZI] = griddata(x,y,z,XI,YI) 函式返回与上述矩阵相同的插补后的矩阵ZI。并返回由行矢量XI和列矢量yi形成的矩阵XI 和YI. 后者与meshgrid 函式返回的矩阵相同。
[...] = griddata(...,method)使用规定的插补方法:
'linear' 基于三角形的线性插补法(预设)
'cubic' 基于三角形的三次插补法
'nearest' 最近邻居插补法
'v4' MATLAB 4 griddata方法。
这些方法定义了匹配数据点的曲面类型。'cubic' 和 'v4' 方法生成平滑曲面,而 'linear' 和 'nearest' 分别具有一阶导数和零阶导数不连续。除'v4' 外所有方法基于数据的三角化。如果方法为[], 则使用预设的'linear' 方法。
[...] = griddata(...,method,options)指定一串将通过delaunayn函式在Qhull中使用的单元阵列选项. 如果选项为 [], 则使用预设的三角化选项。如果选项为{''}, 不使用任何选项,包括预设选项。有时,griddata 函式可能将位于数据凸壳上或靠近凸壳的点返回为NaNs。这是因为有时计算中的圆整处理使得很难确定一个靠近边界的点是否处于凸壳内。
评价
XI and YI 可以是矩阵,这种情况下 griddata函式返回对应点(XI(i,j),YI(i,j))的值. 如若不然,你可以在行向量和列向量xi 和yi中传递, 在这种情况下,griddata对这些矢量插补,如同它们是由命令meshgrid(xi,yi)生成的矩阵一样。
算法
griddata(...,'v4') 命令使用 [3] 中文档化的方法。其他griddata方法基于使用Qhull [2] 的数据三角化。
实例
对一个函式在±2.0範围内随机採样100点:
rand('seed',0)
x = rand(100,1)*4-2; y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);
x, y, 和 z 均为包含非均匀採样数据的矢量。定义一个规範的格线,将数据与格线匹配:
ti = -2:.25:2;
[XI,YI] = meshgrid(ti,ti);
ZI = griddata(x,y,z,XI,YI);
Plot the gridded data along with the nonuniform data points used to generate it: mesh(XI,YI,ZI), hold
plot3(x,y,z,'o'), hold