DT = delaunayTriangulation(X,Y);
NTriangles = size(DT.ConnectivityList,1);
% Triangles' Area Calculation (Try to vectorize)
Areas = zeros(NTriangles,1);
for i = 1:NTriangles
PointIndexes = DT.ConnectivityList(i,:);
Areas(i) = polyarea(DT.Points(PointIndexes,1),DT.Points(PointIndexes,2));
end
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to
automatically calculate the appropriate size for that dimension.
Error in polyarea (line 46)
area = reshape(abs(sum( (x([2:siz(1) 1],:) - x(:,:)).* ...
4条答案
按热度按时间ws51t4hk1#
我也面临着同样的疑问,但谢天谢地,我能够破解它,试试这个:
字符串
这将给予你每个三角形的面积。
如果你发现什么困难,一定要告诉我。
注:
tri'
表示矩阵的转置。rjzwgtxy2#
这可以通过polyarea来完成-注意
dim
选项的使用。字符串
6gpjuf903#
此解决方案有效,但未矢量化。
字符串
kx5bkwkv4#
在我的案例中,这里的答案接近真实,但不完全是,所以我把我的声音加入到讨论中,以供未来可能需要它的人使用。
在尝试这里给出的解决方案时,我得到了以下错误:
字符串
问题是
x(tri')
给出了一个向量,而不是一个矩阵。相反,我做了以下事情:型
这解决了我的问题,同时仍然是一个矢量化的操作。