【问题标题】:When Iterating a MATLAB loop, it doesn't iterate up to the specified value -- Why?迭代 MATLAB 循环时,它不会迭代到指定的值——为什么?
【发布时间】:2011-04-24 19:38:30
【问题描述】:

循环:

for h=1:t_max
    REST OF CODE
end

例如,如果 t_max 等于 100,则循环仅迭代到 99 或 t_max-1。

有人可以帮忙吗?

【问题讨论】:

  • 您需要提供更多详细信息。 for h=1:10; display(h); end 按预期打印 10 次。
  • 如果您对我们隐藏 REST OF CODE,我们将无能为力。

标签: matlab loops iteration max


【解决方案1】:

t_max 是计算值吗?它可能最终非常接近 100,但并不完全在那里,并且由于四舍五入,它会在默认格式设置中显示为 100。这是一个使用较小 t_max 值的示例:

>> t_max=4.9999999999999     

t_max =

    5.0000

注意当 t_max 实际上是一个小于 5 的阴影时,它看起来是 5。在 for 循环中它的行为如下:

>> for i=1:t_max, disp(i),end
     1

     2

     3

     4

看起来只迭代到 t_max - 1。但是提升格式,再次查看 t_max 会更精确地显示该值:

>> format long; t_max

t_max =

   4.999999999999900

【讨论】:

    【解决方案2】:

    检查您没有在循环体中修改 t_max。 for 循环的语义是它会执行 t_max 次,检查official documentation

    【讨论】:

    • 被迭代的矩阵是在 for 循环操作开始时计算的,修改 for 循环体中用于计算它的一个或多个值对循环没有影响。尝试例如t=5;for i=1:t, t=10; disp(i); end,你会看到它只上升到 5,而不是 10。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多