2

如果我有 :

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

甚至更糟:

for i=1:n
    for j=1:m
        for k=1:q
                % do something  
        end
    end
end

如果没有 ,我怎样才能以不同的方式实现这一目标for

4

3 回答 3

5

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

 outputImg(outputImg<thresholdLow)=0;
 outputImg(outputImg>thresholdHigh)=1;

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

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

于 2013-01-04T20:25:27.397 回答
1

如果使用二进制矩阵:

index_matrix = (outputImg < thresholdLow);

以下持有:

index_matrix(i,j) == 0 iff outputImg(i,j) < thresholdLow
index_matrix(i,j) == 1 iff outputImg(i,j) > thresholdLow

也可以看看

对于第二个循环,您始终可以在 for 循环上使用 matirx

于 2013-01-04T20:31:58.823 回答
1

对于一般解决方案,请查看ndgrid在第二种情况下您可以像这样使用哪种:

[i j k] = ndgrid(1:n, 1:m, 1:q);
ijk = [i(:) j(:) k(:)];

然后,您可以遍历、 和的组合列表i,即现在参数化您的阈值语句。jkijk

于 2013-01-04T20:33:39.910 回答