如果我有:
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
?
答案 0 :(得分:5)
您可以使用逻辑条件代替第一个循环,例如:
outputImg(outputImg<thresholdLow)=0;
outputImg(outputImg>thresholdHigh)=1;
当然还有许多其他等效方法可以使用逻辑运算符...
对于第二个循环,您需要更具体,但我认为您掌握了逻辑条件技巧。
答案 1 :(得分: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
对于第二个循环,你总是可以使用matirx for for循环
答案 2 :(得分:1)
对于一般解决方案,请查看ndgrid
,在第二种情况下,您可以使用以下内容:
[i j k] = ndgrid(1:n, 1:m, 1:q);
ijk = [i(:) j(:) k(:)];
然后,您可以遍历i
,j
和k
的组合列表,即现在ijk
,以参数化您的阈值语句。