罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

自然的邻居——一个极好的插值方法

我很高兴欢迎Damian Sheehy本周的嘉宾。达米安在MathWorks geometry-related特性的开发工作。他将提供两个常见问题的答案;一个封面上散乱数据插值,他将在这个博客和其他德劳内三角,他将在未来。交给你了,达米恩……

内容

从客户支持的电子邮件金宝app

我偶尔得到一个电子邮件从客户支持与这个类似一个标题:“griddata给不同的结果。金宝app”。支持工程金宝app师是伟大的,他们知道如何选择一个好的标题能让开发人员的关注和获得快速响应返回给客户。主题可以同样引用scatteredInterpolant像股票一样的底层代码griddata。打开电子邮件之前,我有强烈的怀疑的原因不同。如果第一行开头:“客户升级到MATLAB R20 * *griddata给不同的结果与之前的。”,然后我相当自信的问题是什么。我看客户的数据集,执行计算,创建一个阴谋,和宾果!,I have a canned response and recommendation at the ready and I turn around the question in a matter of minutes.

为什么griddatascatteredInterpolant可能是不一致的

那么为什么griddatascatteredInterpolantMATLAB升级后给不同的答案吗?MathWorks做了什么来解决这个问题?有散乱数据插值问题,用户应该知道的?是的,有一些微妙的行为与最近邻插值和线性插值方法分散数据。这些问题出现在特定的数据集和影响可能显示为MATLAB升级后数值差异。我将解释这些问题的起源和选项作为用户完全避免它们。我还将突出MathWorks所做的来解决这个问题。

首先,让我们看看触发的行为和数据的问题。为了演示,我将选择一个简单的数据集,我们有4个点的角落广场。每个采样点都有一个与之关联的不同的值,我们的目标是计算一个插入值查询点在广场。这里有一个图:

Px = [0;1;1;0);Py = [0;0;1;1);V = [10;1000; 50; 100]; plot(Px, Py,”或“)举行文本(Px + 0.02, Py + 0.02, {“P1 (10)”,“P2 (1000)”,“P3 (50)”,“P4 (100)”})pq = (0.5 - 0.5);情节(pq (: 1), pq (:, 2),‘* b”)举行平等的

首先,让我们考虑最近邻插值法。任何查询点在广场内,插入的值与最近邻关联的值。上面所示的图演示了配置和括号的样本值。时我们可以看到一个模糊查询点位于广场的中心。有四种可能的插值方法的解决方案和基于定义的四个价值观是一个有效的解决方案。金宝搏官方网站理想情况下,我们希望有同样的结果,无论计算机MATLAB是不管什么版本上运行。

这类问题可以用线性插值方法等也会出现。首先进行线性插值,分散的数据集使用德劳内三角测量三角。插入的值查询点然后来自三角形的顶点的值,将点。但德劳内三角的这个数据集不是独一无二的,下面的插图显示了两个有效配置。

次要情节(1、2、1);Px = [0;1;1;0;0;1);Py = [0;0;1; 1; 0; 1]; pq = [0.5 0.25]; plot(Px, Py,“- b”)举行情节(pq (: 1), pq (:, 2),”或“)举行平等的次要情节(1、2、2);Px = [0;0;1;1;0;1);Py = [1;0;0; 1; 1; 0]; plot(Px, Py,“- b”)举行情节(pq (: 1), pq (:, 2),”或“)举行平等的

在线性插值不一致行为的例子

每个场景的插值结果是不同的。给出的代码来演示这是在下面的框中,我不安的一个数据点翻转的斜三角和演示效果。

P = [0 0;1 0;1 1;每股收益(1-eps);];V = [10;1000;50;100);pq = (0.5 - 0.25);F = scatteredInterpolant (P, V); linearVq = F(pq) P = [0 0; 1 0; 1 1; -eps (1+eps);]; F.Points = P; linearVq = F(pq)
linearVq linearVq = 267.5 = 527.5

为什么自然相邻插值优越

插入的值在查询的时候,linearVq三角边缘是如何创建的,是敏感的抢七。这个抢七称为简并问题出现在当我们有4个或更多cocircular德劳内三角剖分cospherical点三维二维或5或更多。现在观察行为当我们选择自然相邻插值法。这个方法也是基于一个潜在的德劳内三角测量,但它产生相同的结果在对角优势互换的存在。这里是:

P = [0 0;1 0;1 1;每股收益(1-eps);];F。点= P;F。方法=“天然”;naturalVq = F (pq) P = [0 0;1 0;1 1;每股收益(1 + eps);];F。点= P;naturalVq = F (pq)
naturalVq naturalVq = 397.5 = 397.5

自然的邻居也是一个平滑插值函数,所以很多有意义有利于自然的邻居在线性的。这引出了一个问题:不自然的邻居方法是默认的吗?这将是我们首选的违约,但是这种方法是添加到MATLAB长后griddata介绍了线性方法。改变默认将产生重大影响,因此破坏性的变化会比它地址的问题。自然的邻居也更需要大量的计算方法,对于大型数据集线性可能首选由于性能的原因。

我们审查的例子强调了问题的性质和给你一个更稳定的选择避免潜在的差异从散乱数据插值后升级MATLAB。我们在发展,我们早就认识到这些类型的问题给用户带来问题,我们采用了更好的底层算法来解决这些问题。如果你是一个长期用户MATLAB和griddata功能,你可能记得更恼人的过去的行为。R2009a之前,反复调用函数使用冗余{' QJ '}每个调用Qhull选项给潜在的不同的结果。问题是解决在R2009a连同自然相邻插值的引入为其稳定和优越的插值性质。自那时以来,改善底层三角算法导致稳定和一致的结果在所有平台上,首先对三维二维,然后。不幸的是,引入这些改进意味着一个潜在的变化行为的升级为特定的数据集,但这就像打破鸡蛋做蛋糕。展望未来,德劳内的行为基于三角函数应该更加稳定。当然,根本改变编码算法可能会触发改变像我们已经看到的,尽管已经大幅减少的范围问题。

你告诉我!

我还没有收到相关的许多支持升级问题自然相邻插值R金宝app2009a自运。我经常想知道这是因为它正在对用户或者用户可能不会使用它。最近邻插值的类似的命名可能会导致一些误解了方法。你呢,你使用自然相邻插值和它是怎样工作的?请让我知道在这里




发表与MATLAB®R2015a


댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그인하거나계정을새로만드십시오。