多边形面积计算差异使用MatLab的Polyarea到Excel的SumProduct

我正在计算这个多边形所包围的区域:

在这里输入图像说明

由一组坐标给出:

0 2.06667 1.14815 2.06667 3.44444 2.75556 5.74074 3.44444 9.18519 3.44444 16.0741 2.75556 26.4074 1.83704 35.5926 1.14815 38.2333 0.688889 38.75 0.028704 

我原来在Excel中使用Sumproduct 方法 ,得到了一个似乎是合理的答案。 我使用的Excel公式是:

 =0.5*ABS(SUMPRODUCT(F30:F39,G31:G40)-SUMPRODUCT(G30:G39,F31:F40)) 

用F30:G40:

 0 2.06667 1.14815 2.06667 3.44444 2.75556 5.74074 3.44444 9.18519 3.44444 16.0741 2.75556 26.4074 1.83704 35.5926 1.14815 38.2333 0.688889 38.75 0.028704 0 0 

结果是87.74

移至Matlab后,我开始使用多polyarea ,答案看起来不合理。 有问题的代码是:

 Shape = [ 0 2.0667; 1.1482 2.0667; 3.4444 2.7556; 5.7407 3.4444; 9.1852 3.4444; 16.0741 2.7556;26.4074 1.8370; 35.5926 1.1482; 38.2333 0.6889; 38.7500 0.0287] C = polyarea(Shape(:,1),Shape(:,2)) 

随着返回的答案:

 C = 47.6986 

我已经试过玩点的顺序,就像在这里给出的答案一样,并且把最后的点加到最后(再次找不到链接),但是这似乎没有太大的区别。

一个答案build议使用convhull的最大封闭区域,但返回50.34与目前定义的Shape

所以,我的问题是: 如何进行这个计算来得到正确的结果呢? Excel提供的值在我看来对我来说更加正确,但是我根据我调查过的帮助和build议,不确定我在MatLab中做了什么。 如果错误在我的Excel代码中,那也是很好的了解。

你没有closures多边形!

 C = polyarea([Shape(:,1); 0],[Shape(:,2); 0]) 

C =

87.740954125

Matlab不会假设(0,0)在多边形中,除非您明确声明!