【发布时间】:2012-06-11 21:59:34
【问题描述】:
我正在开发一个程序,以计算飞机在目标区域上空飞行时可以看到的内容。当它越过该区域时,它可以跟随许多轨道之一,正常区域大小约为 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 分析器在我的程序的瓶颈处确定了这一点。任何帮助将非常感激。 谢谢,丰富
【问题讨论】:
标签: matlab loops for-loop vectorization