假设我们在MATLAB中具有以下内容:
xs = -50:50;
ys = -50:50;
[X,Y] = meshgrid(xs,ys);
rs = (X.^2 + Y.^2).^(1/2);
c = contourf(X,Y,rs,[60,60]);
我如何估计白色区域的面积?
这是一个测试用例,通常我不知道级别设置的方程。
请注意,级别集与边界相交,并且我不能仅仅增加域大小来避免这种情况(在非测试情况下)。
答案 0 :(得分:1)
编辑:如果您想也超出边界来逼近白色区域,则以下方法显然行不通。我刚刚意识到,关于您的措词有很多解释。
如果您至少知道阈值轮廓级别(这里看起来是60
),那么您可以只计算该阈值以下的“像素”数量,然后计算相对于{{1} }和x
。
这是一些示例代码(我也修改了您的代码):
y
输出为:
x = -50:0.1:50;
y = -50:0.1:50;
[X, Y] = meshgrid(x, y);
Z = (X.^2 + Y.^2).^(1/2);
c = contourf(X, Y, Z, [60, 60]);
colorbar();
% Total amount of pixels representing the area
a_pixels_total = length(x) * length(y)
% Amount of pixels below given contour level
a_pixels_below = sum(Z(:) <= 60)
% Total area in units
a_unit_total = (x(end) - x(1)) * (y(end) - y(1))
% Percentage of area below the given contour level in units
a_unit_perc = a_pixels_below / a_pixels_total * a_unit_total
希望有帮助!