【问题标题】: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 suggestedsouty

    但是,一旦条件不满足,最好使用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_valuethreshold 之一是长度为pI_present_y 的向量,则在if 语句中使用y 对其进行索引,即max_sim_value(y)threshold(y)

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 2022-11-04
        • 2014-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多