私は、飛行機がターゲットエリア上を飛行するときに何が見えるかを計算するためのプログラムに取り組んでいます。エリアを通過すると、多くのトラックの1つをたどることができ、通常のエリアサイズでは約100になります。飛行機がエリアの一部を見ることができるかどうかを確認するために大きなループを作成しましたが、非常に非効率的に実行されます。エリアをグリッド1001x1001として定義しました
xgridはx値を定義する変数1001x1です。
thelinesは変数2x1001 xトラックであり、最初の行は一番上の行に対応するx値のy値です。2行目は、一番下の行のy値です。
これらの2つの線の間には、表示領域があります。表示されている場合は、seenarea(1001x1001)上のポイントを1としてマークします。表示されていない場合は0としてマークします。
for M=1:tracks
for f=1:1001
for i=1:1001
if xgrid(f,1)>thelines(i,1,M) && xgrid(f,1)<thelines(i,2,M);
seenarea(f,i,M)=1; % This indicated the area has been seen
else
seenarea(f,i,M)=0; % This is not seen
end
end
end
fullbestinfo(1,M)={seenarea(:,:,M)}; % This stores the seen area in another cell
if max(seenarea(:,:,M)) < 1 % No area seen, stop
seenarea(:,:,M)=[];
break
end
end
matlabプロファイラーを使用して、プログラムのボトルネックでこの点を特定しました。どんな助けでも大歓迎です。ありがとう、リッチ