如何计算面积和一个特定的坐标?

16个视图(30天)
你好,
如果我有下表,
区域重心
_______________
9日147.67 - 109.11
27日146.81 - 108.52
43 147.09 - 109.7
54 147.81 - 109.35
12 146.17 134.42
56个147.73 - 109.46
21日146.48 - 134.05
53个147.83 - 109.26
20 147.3 - 134.25
146 126.5
43 147.67 - 108.63
24 147 134.04
146 126.5
45 147.93 - 108.87
20 147.25 - 133.95
十125.5 - 146.8
37 147.43 - 108.89
16个147.31 - 133.56
126.17 147
36个147.39 - 108.81
12 147.92 133.75
126.5 147
34岁147.32 - 108.91
12 147.92 133.75
146 126.5
29日109 - 147.69
13 147.54 - 133.38
146 126.5
28日147.71 - 109.11
7 148.14 - 134.43
146 126.5
28日147.71 - 109.11
6 148年134.5
7 126.43 - 145.71
28日147.71 - 109.11
7 147.29 - 133.71
1 106 132
8 126.25 - 145.5
25日147.4 - 109.08
7 147.29 - 133.71
1 106 132
5 126.4 - 145.2
31日147.03 - 108.87
9日147.33 - 133.78
132 105.5
126.17 145
31日147.03 - 108.87
9日147.33 - 133.78
1 106 132
3 125.67 - 144.33
31日147.03 - 108.87
9日147.33 - 133.78
31日147.03 - 108.87
9日147.33 - 133.78
28日147.43 - 109.39
十146.7 - 133.6
25日147.08 - 109.4
11日147.55 - 133.18
28日147.43 - 109.39
5 146.8 - 133.2
20 147.7 - 109.55
3 149 132
12 147.92 109.33
如何计算求和区域特定的坐标?
让说我要计算质心的总面积(147 109)
我试着
> >总和(147 109)
但有错误
总和(147 109)
无效的表达式。检查丢失的乘法操作符,错过或不平衡的分隔符,或其他的语法
错误。构建矩阵,使用括号代替括号。
任何人都可以帮我吗?
8的评论
穆罕默德阿克毛马苏德•
我试着这样但是该地区变得更小。
Your_Answer = sum_area_objects (t 147:148 109:110)

登录置评。

接受的答案

图像分析
图像分析 2021年10月19日
@mohd阿克毛马苏德• 你的t是一个表所以你需要这样做:
%从垫加载表文件。
s =负载(“answers.mat”);
t = s.t
%计算的总和(xCentroid yCentroid)从区域范围内(147 - 148,109 - 110)
rowsToInclude = t。重心(:, 1) >= 147 & t.Centroid(:, 1) <= 148 &
t。质心(:,2)> = 109 & t。质心(:,2)< = 110
areasInRange = t.Area (rowsToInclude)
sumOfAreas =总和(areasInRange)
既然你已经有了桌子,t,在你的程序中,你不会做的前3行代码从垫文件读入t。

答案(1)

凯文·霍利
凯文·霍利 2021年10月19日
@mohd阿克毛马苏德• 抱歉迟到的回复。我正在经历老评论之后,发现我没有这个问题(没有邮件通知,注释添加)。
我使用 scatter3 创建三维散点图。
data = [9 147.67 - 109.11
27日146.81 - 108.52
43 147.09 - 109.7
54 147.81 - 109.35
12 146.17 134.42
56个147.73 - 109.46
21日146.48 - 134.05
53个147.83 - 109.26
20 147.3 - 134.25
146 126.5
43 147.67 - 108.63
24 147 134.04
146 126.5
45 147.93 - 108.87
20 147.25 - 133.95
十125.5 - 146.8
37 147.43 - 108.89
16个147.31 - 133.56
126.17 147
36个147.39 - 108.81
12 147.92 133.75
126.5 147
34岁147.32 - 108.91
12 147.92 133.75
146 126.5
29日109 - 147.69
13 147.54 - 133.38
146 126.5
28日147.71 - 109.11
7 148.14 - 134.43
146 126.5
28日147.71 - 109.11
6 148年134.5
7 126.43 - 145.71
28日147.71 - 109.11
7 147.29 - 133.71
1 106 132
8 126.25 - 145.5
25日147.4 - 109.08
7 147.29 - 133.71
1 106 132
5 126.4 - 145.2
31日147.03 - 108.87
9日147.33 - 133.78
132 105.5
126.17 145
31日147.03 - 108.87
9日147.33 - 133.78
1 106 132
3 125.67 - 144.33
31日147.03 - 108.87
9日147.33 - 133.78
31日147.03 - 108.87
9日147.33 - 133.78
28日147.43 - 109.39
十146.7 - 133.6
25日147.08 - 109.4
11日147.55 - 133.18
28日147.43 - 109.39
5 146.8 - 133.2
20 147.7 - 109.55
3 149 132
12个147.92 - 109.33);
scatter3(数据(:1),数据(:,2),数据(:,3),“r”,“填充”)
包含(“区域”)
ylabel (“Centriod coord 1 ')
zlabel (“Centriod coord 2》)
t =表;
t。面积=数据(:1);
t。重心=数据(:,2:3);
Your_Answer = sum_area_objects (t, 147109)
Your_Answer = 812
更正:“所以,从146年到149年和108年至110年”应该是146年到148年和108年到110年。我添加了评论功能澄清所作的。
“假设我想计算面积之和(147 - 148,109 - 110年)”
我创建了一个新的作用。
sum_area_objects_range (t, 147148109110)
ans = 437
sum_area_objects_range (t, 146148108110)
ans = 812
我不知道你怎么有一个面积2150,当所有对象的面积加起来是1138。
总和(t.Area)
ans = 1138
函数total_Area = sum_area_objects (t coord1 coord2)
total_Area = 0;
i = 1:高度(t)
如果t.Centroid(我,1)> coord1-1 & t.Centroid(我,1)< coord1 + 1 & t.Centroid(我,2)> coord2-1 & t.Centroid(我,2)< coord2 + 1
% t.Centroid(我,1)> coord1-1
%这段检查每一行的第一个重心是否列
%值大于146,当coord1 = 147
% t.Centroid(我,1)< coord1 + 1
%这一部分做同样的事但检查值是否更少
% 148,当coord1 = 147
% t.Centroid(我,2)> coord2-1 & t.Centroid(我,2)< coord2 + 1
%这检查每一行的第二个重心是否列
%值大于108,不到110年coord2 = 109。
total_Area = total_Area + t.Area(我);
结束
结束
结束
函数total_Area = sum_area_objects_range (t coord1_min coord1_max、coord2_min coord2_max)
total_Area = 0;
i = 1:高度(t)
如果t.Centroid(我,1)> coord1_min & t.Centroid(我,1)< coord1_max & t.Centroid(我,2)> coord2_min & t.Centroid(我,2)< coord2_max
total_Area = total_Area + t.Area(我);
结束
结束
结束
2的评论
凯文·霍利
凯文·霍利 2021年10月19日
编辑:凯文·霍利 2021年10月19日
data = [5.7553 e + 05年127.46 134.58 72.344
1 138 1
4 30.25 103.25 1.75
17 31.353 112.18 2.2353
13 36.462 98.308 1.1538
71 69.268 155.39 3.3239
1 72 227 1
78 190.5 - 1
31日84.903 174.84 1.3226
21 94.333 168.38 1.1429
7 104.71 36 1
1 112 228 1
1 121 211 1
76 129.82 175.55 2.9211
1 141 85 1
9 147.89 - 227.22 1
24个148.88 212.29 1.375
40 152.57 156.38 3.45
318 152.14 177.12 5.9057
62 162.85 196.77 1.371
1 161 223 1
1 165 129 1
11 169.18 205.64 1.5455
2 141 - 170.5 1
1 175 210 1
200 180.33 - 1
47 207.7 157.11 1.4255
204 187.5 - 1
4 215.5 - 195.5 1
1 221 89 1
7 233.43 174.29 1.8571
1 223 172 2
1 15 137年3
7 31.286 137.57 3.2857
1 42 107 3
6 192 - 65.167 3
4 189 - 71.5 3
1 119 208 3
156 117.03 174.55 5.9872);
t =表;
t。面积=数据(:1);
t。重心=数据(:,2:4);
data = t
data =39×2表
区域 重心 __________ __________________________5.7553 e + 05年127.46 134.58 72.344 1 16 17 138 1 30.25 103.25 1.75 31.353 112.18 2.2353 36.462 98.308 1.1538 71 190.5 69.268 155.39 3.3239 78 72 227 1 2 1 31 7 21 94.333 168.38 1.1429 84.903 174.84 1.3226 104.71 36 1 1 1 112 228 121 211 141 76 129.82 175.55 2.9211 1 85 1 9 147.89 227.22 1
以上的一切都是重新创建表,你已经写的。我可以创建一个变量命名数据表与39行。你的表有1682行。
我已经修改了函数包括centriod第三协调。我也改变了通过改变包括min和max值> > =,<,< =。
这里有一个例子看在80 - 130之间,80 - 130,并为各自的重心列1 - 3。
sum_area_objects_range(数据、80130、80180、1、3)
ans = 128
函数total_Area = sum_area_objects (t coord1 coord2 coord3)
total_Area = 0;
i = 1:高度(t)
如果t.Centroid(我,1)> = coord1-1 & t.Centroid(我,1)< = coord1 + 1 & t.Centroid(我,2)> = coord2-1 & t.Centroid(我,2)< = coord2 + 1 & t.Centroid(我,3)> = coord3-1 & t.Centroid(我,3)< = coord3 + 1
total_Area = total_Area + t.Area(我);
结束
结束
结束
函数total_Area = sum_area_objects_range (t coord1_min coord1_max、coord2_min coord2_max, coord3_min, coord3_max)
total_Area = 0;
i = 1:高度(t)
如果t.Centroid(我,1)> = coord1_min & t.Centroid(我,1)< = coord1_max & t.Centroid(我,2)> = coord2_min & t.Centroid(我,2)< = coord2_max & t.Centroid(我,3)> = coord3_min & t.Centroid(我,3)< = coord3_max
total_Area = total_Area + t.Area(我);
结束
结束
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!