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

标签 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 cm² 这样的数字...我想要这样的数字:

enter image description here

最佳答案

我建议您通过插值来创建所有单独的三角形,然后将结果相加。首先,您需要使用起点(原点)和终点来扩充您的 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)];

然后执行所有插值(我会边做边计算):

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

关于matlab - 对重叠三角形曲线下的累积面积求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982326/

相关文章:

sql - 每小时值总和

javascript - 在多边形中添加一些区域 [JavaScript::Google Map API v3]

excel - 如何对多个组的单个最大值求和?

arrays - 如何匹配两个字符串之间的某些单词(在 MATLAB 中)?

matlab - 创建 mxArray *没有*内存分配/初始化

python - Python 中的 MATLAB spconvert

c++ - 在 C++ 中添加类?

click - 如何使用 AutoHotkey 检测指定区域的点击?

linux - Mount 命令导致我的 homedir 文件在其他位置更新

MATLAB:多项式系数与指数相乘