ここでのこの関数は、私の実行で多くの時間を費やしています。しかし、表示されるのは、ほとんどの場合、組み込み関数polyarea
です。このコードをベクトル化してパフォーマンスを向上させることはできますか?
プロファイラーレポート-
time calls
1 function [S S_area] = Polygons_intersection_Compute_area(S)
2 % Guillaume JACQUENOT
3 % guillaume at jacquenot at gmail dot com
4 % 2007_10_08
5 % 2009_06_16
6 % Compute area of each polygon of in S.
7 % Results are stored as a field in S
8
0.50 51945 9 S_area = struct('A', {});
0.20 51945 10 for i=1:numel(S)
0.28 103890 11 S(i).area = 0;
1.34 103890 12 S_area(i).A = zeros(1,numel(S(i).P));
0.69 103890 13 for j=1:numel(S(i).P)
9.24 103890 14 S_area(i).A(j) = polyarea(S(i).P(j).x,S(i).P(j).y);
0.28 103890 15 S(i).area = S(i).area + (1-2*S(i).P(j).hole) * S_area(i).A(j);
0.01 103890 16 end
0.08 103890 17 end