多边形面积计算差异使用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)在多边形中,除非您明确声明!