如何在Matlab中避免嵌套for循环?

JAN*_*JAN 2 matlab loops for-loop vectorization

如果我有 :

for i=1:n
    for j=1:m
        if outputImg(i,j) < thresholdLow
            outputImg(i,j) = 0;
        elseif outputImg(i,j)> thresholdHigh
            outputImg(i,j) = 1;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

甚至更糟:

for i=1:n
    for j=1:m
        for k=1:q
                % do something  
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

我如何不同实现这一点,没有for

bla*_*bla 5

您可以使用逻辑条件代替第一个循环,例如:

 outputImg(outputImg<thresholdLow)=0;
 outputImg(outputImg>thresholdHigh)=1;
Run Code Online (Sandbox Code Playgroud)

当然还有许多其他等效方法可以使用逻辑运算符...

对于第二个循环,您需要更具体,但我认为您掌握了逻辑条件技巧.