我想在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
答案 0 :(得分:2)
逻辑条件以if
语句
for (y = 1:pI_present_y)
if (max_sim_value > threshold)
% do something
end
end
如果max_sim_value
和threshold
中的一个是长度为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