对重叠三角形曲线下的累积面积求和

时间:2015-03-11 09:06:31

标签: matlab sum area

我有几个三角形的矩阵:

x =

    2.0000    5.0000   10.0000
    8.0000   10.0000   12.0000
   12.0000   24.0000   26.0000
   22.0000   25.0000   28.0000
   23.0000   26.0000   25.0000
   23.5000   27.0000   27.5000
   20.0000   23.0000   27.0000
   21.0000   24.0000   27.0000
   24.0000   25.0000   27.0000
   24.0000   26.0000   27.0000
   24.0000   28.0000   29.0000
   19.0000   22.0000   25.0000
   18.0000   21.0000   23.0000


y =

         0    1.0000         0
         0    0.8000         0
         0    0.6000         0
         0    0.8000         0
         0    0.8000         0
         0    0.8000         0
         0    1.0000         0
         0    1.0000         0
         0    1.0000         0
         0    1.0000         0
         0    1.0000         0
         0    1.0000         0
         0    1.0000         0

一行是一个三角形。列是三角形中每个点的x和y位置。

所以,我绘制了所有这些三角形,我需要将三角形曲线下的累积面积相加。

我尝试使用area功能,但我找不到如何总结他们的区域。

编辑:我需要绘制相同图形中红线区域的总和。所以我不想要一个像20平方厘米的数字......我想要这样的东西:

enter image description here

1 个答案:

答案 0 :(得分:3)

我建议您进行插值以创建所有单个三角形,然后添加结果。首先,您需要使用开头(原点)和结束点来扩充xy矩阵,如下所示:

m = 30; %// This is your max point, maybe set it using max(x(:))?
X = [zeros(size(x,1),1), x, ones(size(x,1),1)*m];
Y = [zeros(size(y,1),1), y, zeros(size(y,1),1)];

然后执行所有插值(I' ll sum as):

xi = 0:0.1:m;
A = zeros(1,size(xi,2)); %// initialization
for row = 1:size(x,1)
    A = A + interp1(X(row,:), Y(row,:), xi);
end

最后是情节:

plot(x,y,'k')
hold on
plot(xi,A,'r','linewidth',2)

使用您提供的示例数据:

enter image description here