我正在开发一个程序来计算飞机在目标区域上空飞行时可以看到什么。当它越过该区域时,它可以跟随许多轨道之一,正常区域大小约为 100。我创建了一个大循环来查看飞机是否可以看到该区域的某些部分,但它的运行效率非常低。我已将该区域定义为 1001x1001 的网格
xgrid 定义 x 值的变量 1001x1。
thelines 是一个变量 2 x 1001 x 轨道,其中第一行是顶行对应 x 值处的 y 值。第二行是底线的 y 值。
这两条线之间是可见区域。如果可以看到,则将 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 分析器在我的程序的瓶颈处确定了这一点。任何帮助将非常感激。谢谢,丰富