主要内容

scatteredInterpolant

插值2-D或3-D分散数据

描述

使用scatteredInterpolant对二维或三维数据集进行插值分散的数据scatteredInterpolant返回interpolant.F.对于给定的数据集。你可以评估F.在一组查询点,例如(yq xq)在2-D中,产生内插值vq = F (xq yq)

使用griddedInterpolant用…进行内插网格数据

创建

描述

F.=散射interpolant.创建一个空的分散数据插值对象。

示例

F.= scatteredInterpolant (xgydF4y2BaygydF4y2BaV.创建一个适合窗体表面的内插V.=F.xgydF4y2BaygydF4y2Ba.向量xgydF4y2BaygydF4y2Ba指定(x, y)样本点的坐标。V.是包含与点关联的示例值的矢量(x, y)

示例

F.= scatteredInterpolant (xgydF4y2BaygydF4y2BaZ.V.创建一个3d的内插形式V.=F.xgydF4y2BaygydF4y2BaZ.)。

示例

F.= scatteredInterpolant (P.V.将样本点的坐标指定为数组。的行P.包含(xgydF4y2BaygydF4y2Ba)或(xgydF4y2BaygydF4y2BaZ.中的值的坐标V.

示例

F.= scatteredInterpolant (___方法指定插值方法:“最近的”“线性”,或“天然”.指定方法作为前三种语法中的最后一个输入参数。

示例

F.= scatteredInterpolant (___方法ExtrapolationMethod指定插值和外推方法。通过方法ExtrapolationMethod作为前两个语法中的任何一个中的最后两个输入参数。

  • 方法可以是:“最近的”“线性”,或“天然”

  • ExtrapolationMethod可以是:“最近的”“线性”,或'没有'

输入参数

全部展开

样本点,指定为大小相同的向量V..样本点应该是唯一的。但是,如果样本点包含重复项,scatteredInterpolant显示警告并将重复项合并为单个点。

数据类型:

样本点数组,指定为一个m——- - - - - -N矩阵,m点数是多少N为点所在空间的维数。每一排P.包含(xgydF4y2BaygydF4y2Ba)或(xgydF4y2BaygydF4y2BaZ.)采样点的坐标。样本点应该是唯一的。但是,如果样本点包含重复项,scatteredInterpolant显示警告并将重复项合并为单个点。

数据类型:

采样值,指定为定义采样点上函数值的向量,V.=F.xgydF4y2BaygydF4y2BaZ.

数据类型:

插值方法,指定为这些选项之一。

方法 描述 连续性
“线性”(默认)

线性插值

C.0.
“最近的”

最近的邻插值

不连续
“天然”

自然邻插值

C.1(样本点除外)

外推方法,指定为这些选项之一。

ExtrapolationMethod 描述
“线性”

基于边界梯度的线性推断。默认值方法“线性”“天然”

“最近的”

最近邻的推断。这种方法计算边界上最近邻的值。默认值方法“最近的”

'没有'

没有外推。的凸包外的任何查询返回

属性

全部展开

样本点,指定为一个矩阵。矩阵的大小是m——- - - - - -2m——- - - - - -3.代表m2-D或3-D空间点。每一排包含(xgydF4y2BaygydF4y2Ba)或(xgydF4y2BaygydF4y2BaZ.)唯一采样点的坐标。的行对应的函数值价值

数据类型:

采样点的功能值,指定为与每个点关联的值的向量

数据类型:

插值方法,指定为“线性”“最近的”,或“天然”.看方法用于描述这些方法。

推断方法,指定为“最近的”“线性”,或'没有'.看ExtrapolationMethod用于描述这些方法。

数据类型:

使用

使用scatteredInterpolant创建interpolant.F..然后你可以评估F.在特定的点使用下列任何语法:

VQ = F(PQ)
VQ = F(XQ,YQ)
Vq = F (Xq, Yq Zq)
Vq = F ({xq, yq})
Vq = F ({xq, yq zq})

  • VQ = F(PQ)指定矩阵中的查询点魁人党.在每一行魁人党包含查询点的坐标。

  • VQ = F(XQ,YQ)Vq = F (Xq, Yq Zq)将查询点指定为两个或三个大小相同的矩阵。

  • Vq = F ({xq, yq})Vq = F ({xq, yq zq})指定查询点为网格向量.使用此语法在要查询的大网格时要保存内存。

例子

崩溃

定义一些样本点,并计算在这些位置的三角函数值。这些点是插值的样本值。

t = linspace(3/4 *π,2 *π,50)';x = [3 * cos (t);2 * cos (t);0.7 * cost);y = [3 * sin (t);2 * sin (t);0.7 * sin (t)];v = repelem ([-0.5;1.5;2)、长度(t));

创建interpolant。

F = scatteredInterpolant (x, y, v);

在查询位置求插值(xqyq)。

tq = linspace (3/4 * pi + 0.2, 2 *π- 0.2,40)';xq = (2.8 * cos (tq操作);1.7 * cos (tq操作);因为(tq)];yq = (2.8 * sin (tq操作);1.7 * sin (tq操作);sin (tq)];vq = F (xq, yq);

策划的结果。

Plot3(x,y,v,'。',xq,yq,vq,'。')、网格标题(线性插值的)包含('x'),Ylabel('是'), zlabel (“价值”)传说(样本数据的“插入查询数据”“位置”“最好”

图中包含一个坐标轴。标题为线性插值的轴包含两个类型为直线的对象。这些对象表示样本数据,插值查询数据。

为一组分散的采样点创建插值,然后在一组3-D查询点处评估内插。

定义200个随机点并采样一个三角函数。这些点是插值的样本值。

rng默认的;P = -2.5 + 5*rand([200 3]);v =罪(P(: 1)。^ 2 +(:, 2页)。^ 2 + P(: 3)。^ 2)。/ (P(: 1)。^ 2 + P (:, 2) ^ 2 + P(:, 3)。^ 2);

创建interpolant。

F = scatteredInterpolant (P, v);

在查询位置求插值(xqyq的zq)。

[xq, yq zq] = meshgrid (2:0.25:2);vq = F (xq, yq zq);

绘制结果的切片。

xslice =(闲置,1 2);yslice = (0, 2);zslice = (2,0);片(xq, yq zq、vq xslice, yslice, zslice)

图中包含一个坐标轴。轴包含7个类型表面的对象。

中的元素替换价值属性,当您想要更改样本点上的值时。当计算新的插值函数时,可以立即得到结果,因为原来的三角剖分没有改变。

创建50个随机点并采样指数函数。这些点是插值的样本值。

rng (“默认”)x = -2.5 + 5 * rand([50 1]);Y = -2.5 + 5 * rand([50 1]);v = x。* exp(-x。^ 2-y。^ 2);

创建interpolant。

F = scatteredInterpolant (x, y, v)
f =具有属性的散射interpolant:point:[50x2双]值:[50x1 double]方法:'linear'外推方法:'linear'

求插值(1.40,1.90)

F (1.40, 1.90)
ans = 0.0069

改变插值的样本值,并在同一点重新计算插值。

x ^2 + y ^2;F.Values = vnew;F (1.40, 1.90)
ans = 5.6491

使用groupsummary消除重复的样本点,并在调用前控制它们的组合方式scatteredInterpolant

创建一个200 × 3的样本点位置矩阵。在最后五行添加重复的点。

P = -2.5 + 5*rand(200,3);P (197:200:) = repmat (P(196年:),4,1);

在采样点上创建一个由随机值组成的向量。

V =兰德(大小(P, 1), 1);

如果你试图使用scatteredInterpolant对于重复的样本点,它抛出一个警告并对相应的值取平均值V.产生一个唯一的点。但是,你可以使用groupsummary在创建插值之前消除重复点。如果您想使用除平均之外的方法合并重复点,这是特别有用的。

使用groupsummary消除重复的样本点并保持最大值V.在重复的样本点位置。指定样本点矩阵作为分组变量,对应的值作为数据。

[V_unique, P_unique] = groupsummary (V, P, @max);

由于分组变量有三列,groupsummary返回唯一的组P_unique作为单元阵列。将单元阵列转换回矩阵。

p_unique = [p_unique {:}];

创建interpolant。由于样本点现在是唯一的,scatteredInterpolant不会抛出警告。

我= scatteredInterpolant (P_unique V_unique);

比较了几种不同的插值算法的结果scatteredInterpolant

创建一个由50个分散点组成的样本数据集。点的数量被人为地缩小,以突出插值方法之间的差异。

x = -3 + 6 *兰特(50,1);Y = -3 + 6 *兰特(50,1);v = sin(x)。^ 4。* cos(y);

创建插值和查询点网格。

F = scatteredInterpolant (x, y, v);[xq, yq] = meshgrid (3:0.1:3);

绘制结果使用“最近的”“线性”,“天然”方法。每次插值方法改变时,您都需要查询插值器以获得更新的结果。

F.Method =.“最近的”;VQ1 = F(XQ,YQ);Plot3(x,y,v,'莫')举行网格(XQ,YQ,VQ1)标题('最近的邻居')传说('样本点'插值结果的“位置”“西北”

图中包含一个坐标轴。标题为“最近邻居”的轴包含两个类型为线、面的对象。这些对象表示样本点,内插表面。

F.Method =.“线性”;VQ2 = F(XQ,YQ);图Plot3(x,y,v,'莫')举行网格(XQ,YQ,VQ2)标题(“线性”)传说('样本点'插值结果的“位置”“西北”

图中包含一个坐标轴。标题为线性的轴包含两个类型为line, surface的对象。这些对象表示样本点,内插表面。

F.Method =.“天然”;vq3 = F (xq, yq);图Plot3(x,y,v,'莫')举行网格(xq yq vq3)标题(“天然的邻居”)传说('样本点'插值结果的“位置”“西北”

图中包含一个坐标轴。带有标题自然邻居的轴包含2个类型线,表面的对象。这些对象表示样本点,内插表面。

画出精确的解。

图Plot3(x,y,v,'莫')举行网格(xq yq,罪(xq)。^4 .* cos(yq)) title('确切的解决方案')传说('样本点'准确的表面的“位置”“西北”

图中包含一个坐标轴。具有标题精确解决方案的轴包含2个类型的型号,表面。这些对象表示样本点,精确表面。

使用最近的邻外推出在凸船外部的单点处查询插值。

定义一个由200个随机点组成的矩阵,并对一个指数函数进行抽样。这些点是插值的样本值。

rng (“默认”) P = -2.5 + 5*rand([200 2]);x = P (: 1);y = P (:, 2);v = x。* exp(-x。^ 2-y。^ 2);

创建插值,指定线性插值和最近的邻外推。

f =散射interpolant(p,v,“线性”“最近的”
F = scatteredInterpolant with properties: Points: [200x2 double] Values: [200x1 double] Method: 'linear' ExtrapolationMethod: 'nearest'

求凸包外的插值。

VQ = F(3.0,-1.5)
VQ = 0.0029.

禁用外推并评估F.在同一点。

F.ExtrapolationMethod ='没有';VQ = F(3.0,-1.5)
vq =南

更多关于

全部展开

提示

  • 求a的值比较快scatteredInterpolant对象F.在许多不同的查询点集合,而不是使用函数单独计算插值griddata.griddatan.例如:

    %快速创建插值F和评估多次f =散射interpolant(x,y,v)v1 = f(xq1,yq1)v2 = f(xq2,yq2)%使用网格数据单独计算插值较慢v1 = griddata(x,y,v,xq1,yq1)v2 = griddata(x,y,v,xq2,yq2)
  • 要改变插值的样本值或插值方法,更新插值对象的属性更有效F.比它创造一个新的scatteredInterpolant对象。当你更新价值方法,输入数据的底层Delaunay三角剖分不会改变,因此可以快速计算新的结果。

  • 分散数据插值scatteredInterpolant使用数据的Delaunay三角剖分,因此对样本点的缩放问题很敏感xgydF4y2BaygydF4y2BaZ.,或P..当出现这种情况时,您可以使用正常化重新归类数据并改进结果。看用不同的幅度对数据进行规范化为更多的信息。

算法

scatteredInterpolant使用分散的样本点的Delaunay三角测量来执行插值[1]

参考文献

[1] Amidror,艾萨克。电子成像系统的散点数据插值方法:综述电子成像杂志.第11卷,第2期,2002年4月,157-176页。

介绍了R2013a