主要内容

griddedInterpolant

网格数据插值

描述

使用griddedInterpolant在1-D, 2-D, 3-D或N-D上执行插值网格数据集。griddedInterpolant返回interpolantF对于给定的数据集。你可以评估F在一组查询点上,例如(yq xq)在2-D中,产生插值值vq = F(xq,yq)

使用scatteredInterpolant分散的数据

创建

描述

F= griddedInterpolant创建一个空网格数据插值对象。

例子

F= griddedInterpolant (xgydF4y2Bav从样本点的向量创建一个1-D插值xgydF4y2Ba和相应的值v

例子

F= griddedInterpolant (X1X2、……XnV创建2-D、3-D或N-D插值完整的网格的样本点作为一组n维数组X1, X2,…,Xn。的V数组中包含与点位置关联的样例值X1, X2,…,Xn。每一个数组X1, X2,…,Xn一定要和V

例子

F= griddedInterpolant (V使用默认网格创建插值器。当你使用这种语法时,griddedInterpolant将网格定义为点的集合,其间距为1range是[1大小(V,我)在…里维度。当您想要保存内存并且不关心点之间的绝对距离时,请使用此语法。

例子

F= griddedInterpolant (gridVecsV指定单元格数组gridVecs包含n网格向量描述n样本点的-维网格。当您希望使用特定的网格并节省内存时,请使用此语法。

例子

F= griddedInterpolant (___方法指定插值方法:“线性”“最近的”“下一个”“以前”“pchip”“立方”“makima”,或样条的。你可以指定方法作为前面任何语法中的最后一个输入参数。

例子

F= griddedInterpolant (___方法ExtrapolationMethod指定插值和外推方法。griddedInterpolant使用ExtrapolationMethod当查询点落在样本点的范围之外时,估计该值。

输入参数

全部展开

样本点,指定为一个向量。xgydF4y2Ba而且v必须是一样的尺寸。样本点在xgydF4y2Ba必须是唯一的。

数据类型:|

样本值,指定为向量、矩阵或多维数组。的要素v这些值是否与样本点相对应xgydF4y2Ba

  • 要使用一组值进行插值,xgydF4y2Ba而且v必须是相同长度的向量。

  • 要使用多组值进行插值,v可以是一个具有额外维度的数组xgydF4y2Ba。的第一个维度的大小v必须匹配样本点的个数xgydF4y2Ba,并且每一列在v定义一组单独的1-D值。例如,如果xgydF4y2Ba一个列向量有10个元素,你可以指定吗v作为一个10 × 4矩阵,用四组不同的值进行插值。

数据类型:|

完整网格形式的样本点,指定为单独的n维数组。样本点必须是唯一的,并且已排序。您可以创建数组X1, X2,…,Xn使用ndgrid函数。这些数组的大小都相同,每个数组的大小都相同V

数据类型:|

网格向量形式的样本点,指定为网格向量的单元格数组{xg1, xg2,…,xgn}。样本点必须是唯一的,并且已排序。向量必须指定与的大小相同的网格V。换句话说,大小(V) =(长度(xg1) (xg2)…,长度(xgn)]。当网格非常大时,使用此表单作为完整网格的替代,以节省内存。

数据类型:|

样例值,指定为数组。的要素V是对应于样本点的值。第一个N的尺寸V必须与样本点的完整网格中对应的尺寸相同,在哪里N是网格的维数。

  • 若要使用一组值进行插值,请指定V作为一个与完整的样本点网格大小相同的数组。例如,如果样本点形成一个大小为100 × 100的网格,则可以使用相同大小的矩阵指定值。

  • 若要使用多组值进行插值,请指定V作为一个与样本点网格相比有额外维度的数组。额外维度在每个采样点定义多个值。例如,如果样本点形成大小为100 × 100的网格,则可以将值指定为大小为100 × 100 × 4的数组,以便使用四组不同的100 × 100值进行插值。

数据类型:|

插值方法,指定为本表中的选项之一。

方法 描述 连续性 评论
“线性”(默认) 线性插值。查询点上的插值值基于每个维度上相邻网格点上的值的线性插值。 C0
  • 每个维度至少需要2个网格点

  • 需要更多的内存“最近的”

“最近的” 最近邻插值。查询点上的插值值是最近的样本网格点上的值。 不连续
  • 每个维度需要2个网格点

  • 最快的计算和适度的内存需求

“下一个” 下一个邻居插值(仅适用于1-D)。查询点的内插值是下一个样本网格点的值。 不连续
  • 要求至少2分

  • 相同的内存要求和计算时间“最近的”

“以前” 以前的邻居插值(仅适用于1-D)。查询点上的插值值是前一个样例网格点上的值。 不连续
  • 要求至少2分

  • 相同的内存要求和计算时间“最近的”

“pchip” 保持形状的分段立方插值(仅适用于1-D)。查询点上的插值值基于相邻网格点上的值保持形状的分段三次插值。 C1
  • 要求至少4分

  • 需要更多的内存和计算时间“线性”

“立方” 立方插值。查询点上的插值值基于每个维度中相邻网格点上的值的三次插值。插值是基于三次卷积的。 C1
  • 网格必须有均匀的间距,尽管每个维度的间距不必相同

  • 每个维度至少需要4个点

  • 需要更多的内存和计算时间“线性”

“makima” 改进的Akima立方Hermite插值。在查询点上的插值值基于一个分段多项式函数,该函数的阶数最多为3,使用每个各自维度中相邻网格点的值进行评估。Akima公式被修改以避免超调。 C1
  • 每个维度至少需要2个点

  • 产生的波动比样条的,但不会像“pchip”

  • 计算比“pchip”,但通常小于样条的

  • 内存需求类似于样条的

样条的 三次样条插值。查询点上的插值值基于每个维度中相邻网格点上的值的三次插值。插值是基于使用非结结束条件的三次样条。 C2
  • 每个维度需要4个点

  • 需要更多的内存和计算时间“立方”

外推方法,指定为“线性”“最近的”“下一个”“以前”“pchip”“立方”样条的,或“makima”。此外,您还可以指定“没有”如果您希望返回网格域外的查询值。

如果你省略了ExtrapolationMethod时,默认值为指定的值方法。如果省略两个方法而且ExtrapolationMethod参数,两个值默认为“线性”

属性

全部展开

网格向量,指定为单元格数组{xg1, xg2,…,xgn}。中值的网格点(位置)。网格点必须唯一。

数据类型:细胞

样本点上的函数值,指定为与网格点相关联的值数组GridVectors

数据类型:|

插值方法,指定为字符向量。方法可以是:“线性”“最近的”“下一个”“以前”“pchip”“立方”样条的,或“makima”。看到方法有关这些方法的描述。

数据类型:字符

外推法,指定为字符向量。ExtrapolationMethod可以是:“线性”“最近的”“下一个”“以前”“pchip”“立方”样条的“makima”,或“没有”。值为“没有”表示禁用外推。缺省值为方法

数据类型:字符

使用

使用griddedInterpolant要创建interpolantF。然后你可以评估F在特定的点上使用下列语法:

Vq = F(Xq)
Vq = F(xq1,xq2,…,xqn)
Vq = F(Xq1,Xq2,…,Xqn)
Vq = F({xgq1,xgq2,…,xgqn})

  • Vq = F(Xq)指定矩阵中的查询点Xq。每行Xq包含查询点的坐标。

  • Vq = F(xq1,xq2,…,xqn)指定查询点xq1 xq2,…,xqn作为长度的列向量代表点分散在n维空间。

  • Vq = F(Xq1,Xq2,…,Xqn)属性指定查询点n维数组Xq1 Xq2,…,Xqn,它们定义了完整的网格的点。

  • Vq = F({xgq1,xgq2,…,xgqn})指定查询点为网格向量。当您想查询一个大型点网格时,使用此语法可以节省内存。

例子

全部折叠

使用griddedInterpolant对一维数据集进行插值。

创建一个分散的样本点向量v。这些点在0到20之间的随机1-D位置进行采样。

X = sort(20*rand(100,1));V = besselj(0,x);

为数据创建网格插值对象。默认情况下,griddedInterpolant使用“线性”插值方法。

F = gridinterpolant (x,v)
F = griddedInterpolant with properties: gridvvectors: {[100x1 double]}值:[100x1 double]方法:'linear' ExtrapolationMethod: 'linear'

查询插值F500个均匀间隔的点在0到20之间。绘制插值结果(vq xq)在原始数据之上(x, v)

Xq = linspace(0,20,500);vq = F(xq);情节(x, v,“罗”)举行情节(xq,矢量量化,“。”)传说(采样点的“插值”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示样本点,插值值。

使用两种方法插值3-D数据以指定查询点。

创建并绘制表示函数的3-D数据集 z xgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 2 + ygydF4y2Ba 2 xgydF4y2Ba 2 + ygydF4y2Ba 2 在范围[-5,5]的一组网格样本点上进行评估。

[x,y] = ndgrid(-5:0.8:5);Z = sin(x。^2 + y.^2) ./ (x.^2 + y.^2)冲浪(x, y, z)

图中包含一个轴对象。axis对象包含一个surface类型的对象。

为数据创建网格插值对象。

F = gridinterpolant (x,y,z);

使用更细的网格来查询插值,提高分辨率。

[xq,yq] = ndgrid(-5:0.1:5);vq = F(xq,yq);冲浪(xq yq vq)

图中包含一个轴对象。axis对象包含一个surface类型的对象。

如果有很多示例点或查询点,并且内存使用成为一个问题,则可以使用网格向量提高内存使用率。

  • 当你指定网格向量而不是使用ndgrid要创建完整的网格,griddedInterpolant避免形成完整的查询网格来执行计算。

  • 当你传递网格向量时,它们通常作为单元格数组中的单元格组合在一起,{xg1, xg2,…, xgn}。网格向量是表示整个网格点的一种紧凑方式。

或者,使用网格向量执行前面的命令。

X = -5:0.8:5;Y = x';Z = sin(x。^2 + y.^2) ./ (x.^2 + y.^2)F = griddedInterpolant({x,y},z);Xq = -5:0.1:5;Yq = xq';vq = F({xq,yq});冲浪(xq yq vq)

图中包含一个轴对象。axis对象包含一个surface类型的对象。

使用默认网格对一组样本点执行快速插值。默认网格使用单位间距的点,所以这种插值是有用的xy样本点之间的间距并不重要。

创建一个样本函数值的矩阵,并将它们绘制在默认网格上。

X = (1:0.3:5)';Y = x';V = cos(x) * siny;N =长度(x)冲浪(1:n, 1: n V)

图中包含一个轴对象。axis对象包含一个surface类型的对象。

使用默认网格插值数据。

F = gridinterpolant (V)
F = griddedInterpolant with properties: gridvators:{[1 2 3 4 5 6 7 8 9 10 11 12 13 14][1 2 3 4 5…][14x14 double]方法:'linear' ExtrapolationMethod: 'linear'

查询插值并绘制结果。

[xq,yq] = ndgrid(1:2:n);Vq = F(xq,yq);冲浪(xq, yq Vq)

图中包含一个轴对象。axis对象包含一个surface类型的对象。

使用间距为的完整网格插值粗采样数据0.5

将样本点定义为二维范围为[1,10]的完整网格。

[X,Y] = ndgrid(1:10,1:10);

样本 f xgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 2 + ygydF4y2Ba 2 在网格点。

V = x .²+ y .²;

创建插值,指定三次插值。

F = gridinterpolant (X,Y,V,“立方”);

定义查询点的完整网格0.5在这些点处间隔并求插值值。然后画出结果。

[Xq,Yq] = ndgrid(1:0.5:10,1:0.5:10);Vq = F(Xq,Yq);网格(Xq Yq Vq);

图中包含一个轴对象。axis对象包含一个surface类型的对象。

的定义域外查询插值的结果比较F使用“pchip”而且“最近的”外推方法。

创建插值,指定“pchip”作为插值方法和“最近的”作为外推法。

X = [1 2 3 4 5];V = [12 16 31 10 6];F = griddedInterpolant(x,v,“pchip”“最近的”
F = griddedInterpolant with properties: gridvtors:{[1 2 3 4 5]}值:[12 16 31 10 6]方法:'pchip' ExtrapolationMethod: 'nearest'

查询插值,并包括域之外的点F

Xq = 0:0.1:6;vq = F(xq);图绘制(x, v,“o”xq矢量量化,“- b”);传奇(“v”矢量量化的

图中包含一个轴对象。axis对象包含2个line类型的对象。这些向量表示v vq。

再次在相同的点上查询插值,这一次使用pchip外推方法。

F.ExtrapolationMethod =“pchip”;图vq = F(xq);情节(x, v,“o”xq矢量量化,“- b”);传奇(“v”矢量量化的

图中包含一个轴对象。axis对象包含2个line类型的对象。这些向量表示v vq。

使用griddedInterpolant在相同的查询点插入三组不同的值。

创建一个样本点的网格 - 5 X 5 而且 - 3. Y 3.

Gx = -5:5;Gy = -3:3;[X,Y] = ndgrid(gx,gy);

在查询点处计算三个不同的函数,然后将值连接到一个3-D数组中。的大小V是一样的X而且Y前两个维度中的网格,但额外维度的大小反映了与每个样本点相关的值的数量(在本例中为三个)。

f1 = x ^2 + y ^2;f2 = x ^3 + y ^3;f3 = x ^4 + y ^4;V = cat(3,f1,f2,f3);

使用样本点和相关值创建插值。

F = gridinterpolant (X,Y,V);

创建查询点网格,网格大小比示例点更细。

Qx = -5:0.4:5;Qy = -3:0.4:3;[XQ,YQ] = ndgrid(qx,qy);

在查询点插值所有三组值。

Vq = f (xq, yq);

将原始数据与插值结果进行比较。

tiledlayout(3,2) nexttile surf(X,Y,f1) title(“f1”nexttile surf(XQ,YQ,VQ(:,:,1))“窜改f1”nexttile surf(X,Y,f2)“f2”nexttile surf(XQ,YQ,VQ(:,:,2))“窜改f2”nexttile surf(X,Y,f3)‘f3’nexttile surf(XQ,YQ,VQ(:,:,3))“窜改f3”

图中包含6个轴对象。标题为f1的Axes对象1包含一个surface类型的对象。标题为Interpolated f1的Axes对象2包含一个类型为surface的对象。axis对象3(标题为f2)包含一个类型为surface的对象。标题为Interpolated f2的Axes对象4包含一个类型为surface的对象。标题为f3的坐标轴对象5包含一个类型为surface的对象。标题为Interpolated f3的Axes对象6包含一个类型为surface的对象。

更多关于

全部展开

提示

  • 求值更快griddedInterpolant对象F在许多不同的查询点集合上,它比单独计算插值使用interp1interp2interp3,或interpn。例如:

    快速创建插值F和评估多次F = gridinterpolant (X1,X2,V) v1 = F(Xq1) v2 = F(Xq2)%使用interp2单独计算插值速度较慢v1 = interp2(X1,X2,V,Xq1) v2 = interp2(X1,X2,V,Xq2)

扩展功能

版本历史

在R2011b中引入

全部展开