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, y和z的尺寸必须相等。如果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, z和v必须相等。如果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"
.
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任何其他的价值method是NA
.
之间的显著差异interpn
另外两个多维插值函数是处理维度的方式。对于interp2
和interp3
,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,:,:)));
这里的vi
和vi2
是相同的。尺寸的反转在中处理meshgrid
和ndgrid
函数。此代码的结果可以在中看到图29.4.
图29.4:的使用演示interpn
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2