【问题标题】:Logical AND in a for loopfor循环中的逻辑与
【发布时间】:2018-01-10 17:12:55
【问题描述】:
我想在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
【问题讨论】:
标签:
matlab
loops
for-loop
conditional-statements
【解决方案1】:
在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
【解决方案2】:
逻辑条件用if语句表示
for (y = 1:pI_present_y)
if (max_sim_value > threshold)
% do something
end
end
如果max_sim_value 和threshold 之一是长度为pI_present_y 的向量,则在if 语句中使用y 对其进行索引,即max_sim_value(y) 或threshold(y)。