我有几个三角形的两个矩阵:
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² 这样的数字...我想要这样的数字:
最佳答案
我建议您通过插值来创建所有单独的三角形,然后将结果相加。首先,您需要使用起点(原点)和终点来扩充您的 x
和 y
矩阵,如下所示:
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)
使用您的示例数据给出:
关于matlab - 对重叠三角形曲线下的累积面积求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982326/