Change for-loop iteration inside the loop.

72 visualizaciones (últimos 30 días)
M G
M G el 10 de Oct. de 2013
Comentada: NALLARASU KRISH el 30 de Mayo de 2023
Dear Matlab users,
I would like to change the For-loop iteration inside the loop if a condition is met. Suppose:
for i = 1:500
pause(0.1)
display(i)
if i == 40
i = 300;
end
end
So, I want whenever i == 40, the iteration changes from 39 to 300 and continues till 500. The code above does not work and every time the loop resets the i value. What I want should look like this:
i = 1, 2, 3, ... 39, 300, 301, 302, 303, ... 500.
  1 comentario
Himanshu Nagpal
Himanshu Nagpal el 14 de Jun. de 2016
You can use the following code
i = 1;
while (i <= 500)
pause(0.1)
display(i)
i = i + 1;
if (i == 40)
i = 300;
end
end

Iniciar sesión para comentar.

Respuestas (3)

Roger Stafford
Roger Stafford el 10 de Oct. de 2013
Editada: Roger Stafford el 10 de Oct. de 2013
Matlab's for-loop is designed so that you cannot change its index, in this case, 'i', within the loop. Even though you have set it to 300, it will stubbornly return on the next trip with i = 41, not 300. To do what you indicate here you should do this instead:
for i = [1:39,300:500]
pause, etc ...
end
If a change in indexing cannot be predicted in advance of entering a for-loop you should use the 'while-end' construct instead where you must control the index yourself instead of an automatic advance at each step. Either that or if you want to sudden depart ahead of time from a for-loop, use the 'break' function.
  2 comentarios
M G
M G el 10 de Oct. de 2013
Hi Roger, Thanks for response, but what if the IF-statement varies every time?
Roger Stafford
Roger Stafford el 10 de Oct. de 2013
See the edited version of my answer.

Iniciar sesión para comentar.


Sachin Patil
Sachin Patil el 20 de Sept. de 2016
Please see this code
i = 1;
for j = 1:500
pause(0.1)
display(i)
i = i + 1;
if i == 40
i = 300;
end
end
  2 comentarios
Jose Martinez
Jose Martinez el 16 de Oct. de 2020
TRASH
NALLARASU KRISH
NALLARASU KRISH el 30 de Mayo de 2023
Yes! value of i goes upto 759 instaed of stopping at 500!!

Iniciar sesión para comentar.


Hector Cano
Hector Cano el 14 de Feb. de 2020
clc;clear;close all
n=[1 1 100];
while (n(1) <= n(3))
j(n(1))=n(1);
if (n(1) == 50)
n(2) = 10;
end
n(1) = n(1) + n(2);
if (n(1)==n(3))
n(3)=200;
end
end
j(j==0)=nan;
plot(j,'*-r')

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by