【问题标题】:MATLAB, how to change loop index inside for loops [duplicate]MATLAB,如何在for循环中更改循环索引[重复]
【发布时间】:2011-12-08 03:14:19
【问题描述】:

我有一个这样的循环:

b = 1;
for c = 1 : 10;
  if b == 1
      c = 1 + 3
  end
end

我需要做什么才能更改c? 因为当我阅读帮助时,MATLAB 会在循环计数器 c 达到 end 后重置它。

有没有办法从for 循环中更改循环计数器的值?

【问题讨论】:

  • 你的意思是c = c + 3?如所写,您似乎打算让循环永不结束,因为c 将始终设置为4
  • 是的,先生,我的意思是,for 循环中的循环会将其值更改为 4,然后将其更改为 4,但在该代码中,我认为那只是 4,但仍然是 10时间循环..
  • 我总是避免在循环中修改循环索引——这可能会导致一些难以发现的错误。以下任何一个答案都是做你想做的更好的方法。
  • 你需要重写问题。正如所写,您已经编写了一个无限循环。
  • @Pursuit et al - 这不是一个无限循环。见this blog post from Loren

标签: matlab


【解决方案1】:

您可以使用 while 循环代替 for 循环。

类似的东西(我猜你想将 3 添加到 c 中,否则 c = 4 可以替换下面的那一行)

b = 1;
c = 1;
while(c < 10)
    if b == 1
        c = c + 3
    end
end

【讨论】:

    【解决方案2】:

    并没有真正遵循您正在尝试做的事情,但您是否希望在循环的每次迭代中将 c 的值增加 3 而不是 1?

    你可以这样做:

    for i = 1:3:10
        // do something
    end
    

    这相当于更常见的 for 循环语法:

    for (c = 1; c <= 10; c+=3)
    {
        // do something
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-17
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      相关资源
      最近更新 更多