我有几个三角形的矩阵:
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
功能,但我找不到如何总结他们的区域。
答案 0 :(得分:3)
我建议您进行插值以创建所有单个三角形,然后添加结果。首先,您需要使用开头(原点)和结束点来扩充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)];
然后执行所有插值(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)
使用您提供的示例数据: