主要内容

推断分散的数据

影响外推准确性的因素

scatteredInterpolant提供用于逼近落在凸包外的点上的值的功能。的“线性”外推法是基于凸包边界梯度的最小二乘近似。它为凸包外的查询点返回的值基于边界上的值和梯度。解决方案的质量取决于您对数据采样的好坏。如果你的数据是粗略抽样的,外推的质量很差。

此外,凸包边界附近的三角剖分可以有类似银条的三角形。这些三角形会影响你的外推结果,就像它们会影响内插结果一样。看到凸包附近插值结果较差更多信息。

您应该使用您对域外行为的知识,可视化地检查您的外推结果。

粗采样和细采样分散数据外推的比较

这个例子展示了如何插值同一抛物线函数的两个不同采样。结果还表明,样本点分布越好,外推结果越好。

创建围绕10个同心圆,间隔10度的点的径向分布。使用bsxfun为了计算坐标, x 因为 θ 而且 y θ

Theta = 0:10:350;C = cosd(theta);S = sind();R = 1:10;X1 = bsxfun(@times,r.',c);Y1 = bsxfun(@times,r.',s);图绘制(x1, y1,‘* b”)轴平等的

图中包含一个axes对象。axis对象包含36个line类型的对象。

创建第二组更粗略分布的点集合。使用兰德函数在范围[- 10,10]内创建随机抽样。

rng默认的;X2 = -10 + 20*兰特([25 1]);Y2 = -10 + 20*兰特([25 1]);图绘制(x2, y2),‘*’

图中包含一个axes对象。axis对象包含一个类型为line的对象。

抽样抛物线函数,v (x, y),在这两个点上。

V1 = x1。²+ y1.²;V2 = x2。^2 + y2.^2;

创建一个scatteredInterpolant对于每个抽样v (x, y)

F1 = scatteredInterpolant(x1(:),y1(:),v1(:));F2 = scatteredInterpolant(x2(:),y2(:),v2(:)));

创建超出每个域的查询点网格。

[xq,yq] = ndgrid(-20:20);

评估F1然后画出结果。

图vq1 = F1(xq,yq);冲浪(xq yq vq1)

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

评估F2然后画出结果。

图vq2 = F2(xq,yq);冲浪(xq yq vq2)

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

外推的质量不是很好F2因为粗采样点在v2

三维数据的外推

这个例子展示了如何外推一个良好采样的三维网格数据集scatteredInterpolant.查询点位于完全不在域内的平面网格上。

创建一个10乘10乘10的样本点网格。每个维度中的点都在,[- 10,10]的范围内。

[x,y,z] = ndgrid(-10:10);

抽样一个函数,v (x, y, z)在样本点处。

V = x.²+ y.²+ z.²;

创建一个scatteredInterpolant,指定线性插值和外推。

F = scatteredInterpolant(x(:),y(:),z(:),v(:),“线性”“线性”);

求插值函数对an的值x - y网格跨越范围,在海拔[-20,20],z= 15。

[xq,yq,zq] = ndgrid(-20:20,-20:20,15);vq = F(xq,yq,zq);图冲浪(xq, yq vq)

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

外推的结果很好,因为函数是很好的抽样。

Baidu
map