主要内容

散开的interpolant.

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

描述

使用散开的interpolant.在2-D或3-D数据集上执行插值分散的数据散开的interpolant.返回interpolantF对于给定的数据集。你可以评估F在一组查询点上,例如(XQ,YQ)在二维中,生成插值值VQ = F(XQ,YQ)

使用栅格internallant.执行插值网格数据

创建

描述

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

例子

F=散射interpolant(XG.ydF4y2Bayg.ydF4y2Bav创建一个适合形式表面的内插体vFXG.ydF4y2Bayg.ydF4y2Ba.vectors.XG.ydF4y2Bayg.ydF4y2Ba指定(x,y)样品点的坐标。v一个向量是否包含与这些点相关的样本值(x,y)

例子

F=散射interpolant(XG.ydF4y2Bayg.ydF4y2Bazv创建表单的3-D立体vFXG.ydF4y2Bayg.ydF4y2Baz).

例子

F=散射interpolant(Pv指定样本点作为数组的坐标。行的行P包含(XG.ydF4y2Bayg.ydF4y2Ba)或(XG.ydF4y2Bayg.ydF4y2Baz)坐标的值v

例子

F=散射interpolant(___方法指定一个插值方法:'最近''线性', 或者'自然'.指定方法作为前三种语法中的任何一个中的最后一个输入参数。

例子

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

  • 方法可以是:'最近''线性', 或者'自然'

  • 外推方法可以是:'最近''线性', 或者“没有”

输入参数

展开全部

样本点,指定为与相同尺寸的向量v.采样点必须是唯一的。但是,如果样本点包含重复点,散开的interpolant.显示警告并将重复合并到单个点中。

数据类型:双倍的

样本点数组,指定为-经过-n矩阵,其中是点数和n是要点所在的空间的尺寸。每一行的P包含(XG.ydF4y2Bayg.ydF4y2Ba)或(XG.ydF4y2Bayg.ydF4y2Baz)样本点的坐标。采样点必须是唯一的。但是,如果样本点包含重复点,散开的interpolant.显示警告并将重复合并到单个点中。

数据类型:双倍的

指定为定义样本点处的函数值的向量的示例值,vFXG.ydF4y2Bayg.ydF4y2Baz

数据类型:双倍的

插值方法,指定为其中一个选项。

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

线性插值

C0
'最近'

最近邻插值

不连续
'自然'

自然相邻插值

C1(样本点除外)

推断方法,指定为其中一个选项。

外推方法 描述
'线性'

基于边界梯度的线性外推。默认时方法'线性'或者'自然'

'最近'

最近的邻居外推。此方法评估边界上最近邻居的值。默认时方法'最近'

“没有”

没有推断。凸壳外的任何疑问返回

特性

展开全部

采样点,指定为矩阵。矩阵的大小是-经过-2或者-经过-3.代表二维或三维空间中的点。每一行的包含(XG.ydF4y2Bayg.ydF4y2Ba)或(XG.ydF4y2Bayg.ydF4y2Baz)独特样本点的坐标。行in.中对应的函数值

数据类型:双倍的

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

数据类型:双倍的

插值方法,指定为'线性''最近', 或者'自然'.看到方法获取这些方法的描述。

外推法,指定为'最近''线性', 或者“没有”.看到外推方法获取这些方法的描述。

数据类型:双倍的

使用

使用散开的interpolant.创建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)指定矩阵中的查询点PQ..每一行PQ.包含查询点的坐标。

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

  • Vq = f({xq,yq})Vq = f({xq,yq,zq})指定查询点作为网格向量.当您想查询大量的网格点时,使用此语法可以节省内存。

例子

全部折叠

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

t = linspace(3/4 * pi,2 * pi,50)';x = [3 * cos(t);2 * cos(t);0.7 * cos(t)];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);

评估查询位置的插值(XQ.YQ.).

TQ = LINSPACE(3/4 * PI + 0.2,2 * PI-0.2,40)';xq = [2.8 * cos(tq);1.7 * cos(tq);cos(tq)];YQ = [2.8 * SIN(TQ);1.7 * SIN(TQ);罪(TQ)];VQ = F(XQ,YQ);

绘制结果。

plot3 (x, y, v,“。”xq yq,矢量量化,“。”), 网格标题('线性插值')xlabel(“x”), ylabel (“y”), zlabel (“值”) 传奇('样本数据''插值查询数据''地点'“最佳”

图中包含一个轴。标题线性插值的轴包含2个类型的2个对象。这些对象表示示例数据,内插查询数据。

为一组分散的样本点创建一个插值,然后在一组3d查询点上计算这个插值。

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

RNG.默认;p = -2.5 + 5 * rand([200 3]);v = sin(p(:,1)。^ 2 + p(:,2)。^ 2 + p(:,3)。^ 2)./(p(:,1)。^ 2 + p(:,2)。^ 2 + p(:,3)。^ 2);

创建interpolant。

f =散射interpolant(p,v);

评估查询位置的插值(XQ.YQ.ZQ.).

[xq,yq,zq] = meshgrid(-2:0.25:2);VQ = F(XQ,YQ,ZQ);

绘制结果的切片。

xslice = [-.5,1,2];yslice = [0,2];zslice = [-2,0];切片(XQ,YQ,ZQ,VQ,XSLICE,YSLICE,ZSLICE)

图中包含一个轴。轴包含7个类型表面的物体。

替换中的元素您想要更改采样点处的值时的属性。当您评估新的Interpolant时,您可以立即获得结果,因为原始三角测量不会改变。

创建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 =散射interpolant(x,y,v)
F = scatteredInterpolant with properties: Points: [50x2 double] Values: [50x1 double] Method: 'linear' ExtrapolationMethod: 'linear'

评估interpolatt(1.40, 1.90)

F(1.40,1.90)
ans = 0.0069.

更改内插样本值并在同一点重新评估内插。

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

使用groupsummary消除重复的采样点并控制在呼叫之前将它们组合方式散开的interpolant.

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

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

在采样点创建随机值的向量。

v = rand(尺寸(p,1),1);

如果你想用散开的interpolant.具有重复的采样点,它会引发警告并平均相应的值V产生一个独特的点。但是,你可以使用groupsummary在创建插值之前消除重复点。如果要使用除了平均之外的方法组合重复点,则这是特别有用的。

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

[v_unique,p_unique] =组ummary(v,p,max);

由于分组变量有三列,因此groupsummary返回唯一的组p_unique作为一个单元格数组。将单元格数组转换回矩阵。

P_unique = [P_unique {}):;

创建interpolant。由于样本点现在是独一无二的,散开的interpolant.不抛出警告。

我=散射interpolant(p_unique,v_unique);

比较多个不同插值算法的结果散开的interpolant.

创建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)标题(“最近邻”) 传奇(采样点的'内插表面''地点''西北'

图中包含一个轴。带有标题最近邻居的轴包含2个类型的线条,表面对象。这些对象代表采样点,插值曲面。

F.Method ='线性';vq2 = F (xq, yq);图plot3 (x, y, v,“莫”) 抓住网格(xq yq vq2)标题('线性') 传奇(采样点的'内插表面''地点''西北'

图中包含一个轴。具有标题线性的轴包含2个类型的线,表面。这些对象代表采样点,插值曲面。

F.Method ='自然';VQ3 = F(XQ,YQ);图plot3 (x, y, v,“莫”) 抓住网格(XQ,YQ,VQ3)标题(“自然邻居”) 传奇(采样点的'内插表面''地点''西北'

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

绘制精确的解决方案。

图plot3 (x, y, v,“莫”) 抓住网格(XQ,YQ,SIN(XQ)。^ 4. * COS(YQ))标题(精确解的) 传奇(采样点的'确切的表面''地点''西北'

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

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

定义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 =带有属性的散射interpolant:point:[200x2 double]值:[200x1 double]方法:'线性'外推方法:'最近'

评估凸壳外部的内插。

vq = F (3.0, -1.5)
vq = 0.0029

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

F.ExtrapolationMethod =“没有”;vq = F (3.0, -1.5)
VQ = NAN.

更多关于

展开全部

尖端

  • 评估a更快散开的interpolant.对象F在许多不同的查询点集中,它是用函数分别计算插值griddata或者栅格坦.例如:

    %快速创建Interpolant F并多次评估F = scatteredInterpolant(X,Y,V) v1 = F(Xq1,Yq1) v2 = F(Xq2,Yq2)使用GridData分别计算次数较慢v1 = griddata(X,Y,V,Xq2,Yq2)
  • 要更改插值示例值或插值方法,更新内插对象的属性更有效F不如创造一个新的散开的interpolant.目的。当你更新时或者方法,输入数据的底层delaunay三角测量不会更改,因此您可以快速计算新结果。

  • 离散数据插值散开的interpolant.使用数据的Delaunay三角测量,因此可以对采样点中的缩放问题敏感XG.ydF4y2Bayg.ydF4y2Baz, 或者P.发生这种情况时,可以使用正常化调整数据并改进结果。看到标准化具有不同量大的数据想要查询更多的信息。

算法

散开的interpolant.使用离散采样点的Delaunay三角剖分来执行插值[1]

参考

[1] Amidror,Isaac。“电子成像系统的分散数据插值方法:调查”。电子成像.卷。11,第2号,2002年4月,第157.176页。

在R2013A介绍