小编use*_*950的帖子

简化循环(matlab)

我正在研究一个工作计划,以计算飞机在目标区域上空飞行时可以看到的情况.当它越过该区域时,它可以跟随许多轨道中的一个,大约100个正常区域大小.我已经创建了一个大型循环,以查看该平面是否可以看到该区域的某些部分但是它的运行效率非常低.我已将该区域定义为网格1001x1001

xgrid定义x值的变量1001x1.

thelines是一个可变的2 x 1001 x轨道,其中第一行是顶行相应x值的y值.第二行是底线的y值.

在这两条线之间是可见区域.如果可以看到它将seearea(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
Run Code Online (Sandbox Code Playgroud)

我已经使用matlab探查器确定了我的程序的瓶颈.任何帮助将非常感激.谢谢,Rich

matlab loops for-loop vectorization

3
推荐指数
1
解决办法
1062
查看次数

标签 统计

for-loop ×1

loops ×1

matlab ×1

vectorization ×1