主要内容

scatteredInterpolant

插值二维或三维分散数据

描述

使用scatteredInterpolant对二维或三维数据集进行插值分散的数据scatteredInterpolant返回interpolantF对于给定的数据集。你可以评估F在一组查询点上,例如(yq xq)在二维空间中,生成插值值vq = F (xq yq)

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

创建

描述

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

例子

F= scatteredInterpolant (xgydF4y2BaygydF4y2Bav创建一个适合窗体表面的内插vFxgydF4y2BaygydF4y2Ba.向量xgydF4y2BaygydF4y2Ba指定(x, y)样本点的坐标。v是否包含与点相关的样本值的向量(x, y)

例子

F= scatteredInterpolant (xgydF4y2BaygydF4y2Bazv创建一个3d的内插形式vFxgydF4y2BaygydF4y2Baz).

例子

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

例子

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

例子

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

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

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

输入参数

全部展开

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

数据类型:

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

数据类型:

采样值,指定为定义采样点上函数值的向量,vFxgydF4y2BaygydF4y2Baz

数据类型:

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

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

线性插值

C0
“最近的”

最近邻插值

不连续
“天然”

自然相邻插值

C1(样本点除外)

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

ExtrapolationMethod 描述
“线性”

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

“最近的”

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

“没有”

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

属性

全部展开

样本点,指定为一个矩阵。矩阵的大小是——- - - - - -2——- - - - - -3.代表点在二维或三维空间。每一行的包含(xgydF4y2BaygydF4y2Ba)或(xgydF4y2BaygydF4y2Baz)唯一采样点的坐标。的行对应的函数值

数据类型:

采样点上的函数值,指定为与中每个点相关联的值向量

数据类型:

插值方法,指定为“线性”“最近的”,或“天然”.看到方法有关这些方法的说明。

外推法,指定为“最近的”“线性”,或“没有”.看到ExtrapolationMethod有关这些方法的说明。

数据类型:

使用

使用scatteredInterpolant创建interpolantF.然后你可以评估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,矢量量化,“。”)、网格标题(线性插值的)包含(“x”), ylabel (“y”), zlabel (“值”)传说(样本数据的“插入查询数据”“位置”“最佳”

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

为一组分散的样本点创建一个插值,然后在一组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)

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

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

创建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 = scatteredInterpolant with properties: Points: [50x2 double] Values: [50x1 double] Method: 'linear' ExtrapolationMethod: '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*rand(50,1);Y = -3 + 6*rand(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)标题(“最近邻”)传说(采样点的插值结果的“位置”“西北”

图中包含一个轴对象。标题为“最近邻居”的轴对象包含两个类型为line、surface的对象。这些对象代表采样点,插值曲面。

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)标题(“天然的邻居”)传说(采样点的插值结果的“位置”“西北”

图中包含一个轴对象。标题为“自然邻居”的轴对象包含两个类型为线、面的对象。这些对象代表采样点,插值曲面。

画出精确的解。

图plot3 (x, y, v,“莫”)举行网格(xq yq,罪(xq)。^4 .* cos(yq)) title(精确解的)传说(采样点的准确的表面的“位置”“西北”

图中包含一个轴对象。标题为“精确解”的轴对象包含两个类型为线、面的对象。这些对象代表采样点,精确曲面。

使用最近邻外推法在凸包外的单点上查询内插。

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

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

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

F = scatteredInterpolant (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在许多不同的查询点集合,而不是使用函数单独计算插值griddatagriddatan.例如:

    %快速创建插值F和评估多次F = scatteredInterpolant(X,Y,V) v1 = F(Xq1,Yq1) v2 = F(Xq2,Yq2)%使用网格数据单独计算插值较慢= griddata(X,Y,V,Xq1,Yq1)
  • 要改变插值的样本值或插值方法,更新插值对象的属性更有效F而不是创造一个新的scatteredInterpolant对象。当你更新方法,输入数据的底层Delaunay三角剖分不会改变,因此可以快速计算新的结果。

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

算法

scatteredInterpolant使用分散样本点的Delaunay三角剖分来进行插值[1]

参考文献

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

扩展功能

介绍了R2013a