gpt4 book ai didi

excel - 使用 MatLab Polyarea 与 Excel SumProduct 进行多边形面积计算的差异

转载 作者:行者123 更新时间:2023-12-02 06:45:18 25 4
gpt4 key购买 nike

我正在计算这个多边形包围的面积:

enter image description here

由一组坐标给出:

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 method 完成此操作的。 ,并得到了一个似乎合理的答案。我使用的 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

我尝试按照一个答案建议的方式调整点的顺序 here以及将最后的点添加到末尾(无法再次找到链接),但这似乎并没有产生很大的区别。

One answer suggested使用 convhull 作为最大封闭区域,但返回的 Shape 为当前定义的 50.34。

所以,我的问题是:应该如何执行此计算才能得到正确的结果?根据图表,Excel 提供的值对我来说看起来更正确,但根据我调查的帮助和建议,我不确定我在 MatLab 中做错了什么。如果错误出现在我的 Excel 代码中,那么知道这一点也很好。

最佳答案

您没有关闭多边形!

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

C =

87.740954125

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

关于excel - 使用 MatLab Polyarea 与 Excel SumProduct 进行多边形面积计算的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com