我正在工作中编写一个程序,用于计算飞机在飞越目标区域时可以看到什么。当它飞过该区域时,它可以沿着多条航迹之一飞行,对于普通区域大小约有100条轨迹。我创建了一个大循环来查看飞机是否能够看到区域的某些部分,但其运行效率非常低。我将该区域定义为一个1001x1001的网格。
xgrid是一个变量,1001x1,定义x值。
thelines是一个变量,2 x 1001 x tracks,其中第一行是相应x值顶线处的y值,第二行是底线处的y值。
这两条线之间是可见区域。如果可以看到,则将seenarea(1001x1001)上的点标记为1。否则为0。
我使用Matlab分析器,确定了程序的瓶颈位置。非常感谢您能提供帮助。 谢谢,Rich
xgrid是一个变量,1001x1,定义x值。
thelines是一个变量,2 x 1001 x tracks,其中第一行是相应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分析器,确定了程序的瓶颈位置。非常感谢您能提供帮助。 谢谢,Rich
idx
用于逻辑寻址,但在此之后您使用不存在的变量index
来寻址seenarea
。 - nrz