逻辑AND在for循环中

时间:2017-08-03 08:10:13

标签: matlab loops for-loop conditional-statements

我想在for循环中添加一个附加条件。

for(i=1; (i<100)&&(something>0.001) ; i++)
{
   //do something
}

我如何在MATLAB中实现它?

以下不起作用:

for (y = 1:pI_present_y) && (max_sim_value > threshold)
    % do something
end

2 个答案:

答案 0 :(得分:2)

逻辑条件以if语句

表示
for (y = 1:pI_present_y)
    if (max_sim_value > threshold)
        % do something
    end
end

如果max_sim_valuethreshold中的一个是长度为pI_present_y的向量,请使用y语句中的if对其进行索引,即{{1} }或max_sim_value(y)

答案 1 :(得分:2)

for循环中,第一次执行时,将立即选择迭代次数和循环变量在这些迭代中将具有的值。
由于您希望在每次迭代时检查条件,因此如果不在循环内引入if条件,则不能使用for循环。这是already suggested souty的内容。

但是,一旦不满足条件,最好使用break。通过这种方式,它将成为C代码的真实副本。否则循环将继续执行,直到y等于pI_present_y。结果将是相同的但是会有不必要的迭代,并且循环变量的值在循环结束时将是不同的。即。

for y = 1:pI_present_y-1  %Subtracting 1 because you have i<100 in the C code, not i<=100
    if max_sim_value <= threshold
       break;
    end
    %do something
end

如果要在循环语句中使用该条件,则只能使用while循环。

y=1;
while(y<pI_present_y   &&   max_sim_value>threshold)
    % do something
    y=y+1;
end