При повторении цикла MATLAB он не повторяется до указанного значения — Почему?

#matlab #loops #iteration #max

#matlab #циклы #итерация #макс

Вопрос:

цикл:

 for h=1:t_max
    REST OF CODE
end
  

например, если t_max равно 100, цикл повторяется только до 99 или t_max-1.

Кто-нибудь может помочь?

Комментарии:

1. Вам необходимо предоставить более подробную информацию. for h=1:10; display(h); end печатается 10 раз, как и ожидалось.

2. мы не сможем помочь, если вы спрячетесь REST OF CODE от нас.

Ответ №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 раз, проверьте официальную документацию.

Комментарии:

1. Повторяемая матрица вычисляется в начале операции цикла for, и изменение значения или значений, используемых для ее вычисления в теле цикла for, не влияет на цикл. Попробуйте, например t=5;for i=1:t, t=10; disp(i); end , вы увидите, что оно увеличивается только до 5, а не до 10.