29.2多维插值

Octave中有三个多维插值函数,具有类似的函数。中描述了使用Delaunay镶嵌的方法Interpolation on Scattered Data.

 
: zi = interp2 (x, y, z, xi, yi)
: zi = interp2 (z, xi, yi)
: zi = interp2 (z, n)
: zi = interp2 (z)
: zi = interp2 (…, method)
: zi = interp2 (…, method, extrap)

二维插值。

插值数字参考数据x, y, z以确定zi在坐标xi, yi处的值.参考数据x, y可以是矩阵,从返回meshgrid,在这种情况下x, yz的尺寸必须相等。如果x, y是向量, length (x) == columns (z)length (y) == rows (z). 在任何一种情况下,输入数据都必须是严格单调的。

如果调用时没有x, y,且只有一个参考数据矩阵z,则假定二维区域x = 1:columns (z), y = 1:rows (z).如果网格是规则的,并且点之间的距离不重要,这样可以节省内存。

如果使用单个参考数据矩阵调用z和一个精化值n,然后在网格上执行插值,其中每个原始区间都已递归细分n时间。这导致2^n-1原始网格中每个区间的附加点。如果n则使用值1。例如,具有的区间[0,1]n==2得到一个精细区间,其点位于[0,1/4,1/2,3/4,1]。

插值method是其中之一:

"nearest"

返回最近的邻居。

"linear" (default)

最近邻居的线性插值。

广告
"pchip"

分段三次Hermite插值多项式——一阶导数光滑的保形插值。

广告
"cubic"

使用卷积核函数的三次插值——具有平滑一阶导数的三阶方法。

广告
"spline"

三次样条插值——平滑贯穿曲线的一阶导数和二阶导数。

广告

extrap是一个标量。它替换端点以外的值开关extrap。请注意,如果extrap使用时,method也必须指定。如果extrap被省略,并且method"spline",则的外推值"spline"被使用。否则默认extrap任何其他的价值method"NA".

详见: interp1, interp3, interpn, meshgrid.

广告
 
: vi = interp3 (x, y, z, v, xi, yi, zi)
: vi = interp3 (v, xi, yi, zi)
: vi = interp3 (v, n)
: vi = interp3 (v)
: vi = interp3 (…, method)
: vi = interp3 (…, method, extrapval)

三维插值。

插值数字参考数据x, y, z, v以确定vi在坐标处xi, yi, zi.参考数据x, y, z可以是矩阵,从返回meshgrid,在这种情况下x, y, zv必须相等。如果x, y, z向量描述的是一个三次网格,那么length (x) == columns (v),length (y) == rows (v)length (z) == size (v, 3)在任何一种情况下,输入数据都必须是严格单调的。

如果调用时没有x, y, z,并且只有一个参考数据矩阵v,三维区域x = 1:columns (v), y = 1:rows (v), z = 1:size (v, 3)是假定的。如果网格是规则的,并且点之间的距离不重要,这样可以节省内存。

如果使用单个参考数据矩阵调用v和一个精化值n,然后在每个原始间隔已递归细分的三维网格上执行插值n时间。这导致2^n-1原始网格中每个间隔的附加点。如果n则使用值1。例如,具有的区间[0,1]n==2得到一个点在[0,1/4,1/2,3/4,1]的细化区间。

插值method是其中之一:

"nearest"

返回最近的邻居。

广告
"linear" (default)

最近邻居的线性插值。

广告
"cubic"

分段三次Hermite插值多项式——具有光滑一阶导数的保形插值(尚未实现)。

广告
"spline"

三次样条插值——平滑贯穿曲线的一阶导数和二阶导数。

广告

extrapval是一个标量。它替换端点以外的值开关extrapval。请注意,如果extrapval使用时,method也必须指定。如果extrapval被省略,并且method"spline",则的外推值"spline"使用。否则默认extrapval任何其他的价值method"NA".

详见: interp1, interp2, interpn, meshgrid.

广告
 
: vi = interpn (x1, x2, …, v, y1, y2, …)
: vi = interpn (v, y1, y2, …)
: vi = interpn (v, m)
: vi = interpn (v)
: vi = interpn (…, method)
: vi = interpn (…, method, extrapval)

表演n-尺寸插值,其中n至少是两个。

的每个数字元素n-维度数组v表示参数给定位置的值x1, x2, …, xn.参数x1, x2, …, xn要么n-与数组大小相同的维度数组v"ndgrid"格式或向量。

参数y1, y2, …, yn表示数组所在的点vi是插值的。它们可以是相同长度和方向的向量,在这种情况下,它们被解释为散射点的坐标。如果它们是不同方向或长度的向量,则用于在中形成网格"ndgrid"format它们也可以是n-大小相等的维度数组。

如果x1, …, xn被省略,它们被假定为x1 = 1 : size (v, 1),等等。如果m则插值在每个插值点之间的一半位置添加一个点。执行此过程m时间。要是…就好了v如果已指定,则m假设为1.

插值method是其中之一:

"nearest"

返回最近的邻居。

广告
"linear" (default)

最近邻居的线性插值。

广告
"pchip"

分段三次Hermite插值多项式——具有光滑一阶导数的保形插值(尚未实现)。

广告
"cubic"

三次插值(与"pchip"[尚未支持])。

广告
"spline"

三次样条插值——平滑贯穿曲线的一阶导数和二阶导数。

广告

默认方法为"linear".

extrapval是一个标量。它替换端点以外的值开关extrapval。请注意,如果extrapval使用时,method也必须指定。如果extrapval被省略,并且method"spline",则的外推值"spline"使用。否则默认extrapval任何其他的价值methodNA.

详见: interp1, interp2, interp3, spline, ndgrid.

广告

之间的显著差异interpn另外两个多维插值函数是处理维度的方式。对于interp2interp3,y轴被认为是矩阵的列,而x轴对应于数组的行。从于Octave按列主顺序索引数组,因此任何数组的第一个维度都是列,因此interpn有效地反转“x”和“y”维度。考虑这个例子,

x = y = z = -1:1;
f = @(x,y,z) x.^2 - y - z.^2;
[xx, yy, zz] = meshgrid (x, y, z);
v = f (xx,yy,zz);
xi = yi = zi = -1:0.1:1;
[xxi, yyi, zzi] = meshgrid (xi, yi, zi);
vi = interp3 (x, y, z, v, xxi, yyi, zzi, "spline");
[xxi, yyi, zzi] = ndgrid (xi, yi, zi);
vi2 = interpn (x, y, z, v, xxi, yyi, zzi, "spline");
mesh (zi, yi, squeeze (vi2(1,:,:)));

这里的vivi2是相同的。尺寸的反转在中处理meshgridndgrid函数。此代码的结果可以在中看到图29.4.

interpn

图29.4:的使用演示interpn


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

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