Using break/continue in a for loop

I have this loop and I want the second loop to have steps with different sizes and I need the inner loop to end after each iteration and go to the next e:
N = 4;
ODN = [ 4 5 4 4];
NP = 17;
ODD = [10000 10000, 5000 5000];
for e = 1:N
for f = 1:ODN(e,1):NP
L = tp(f:ODN(e,1),1);
[X,Y] = min(L,[],1);
xpC(Y,1) = ODD(f,1);
continue
end
end
if I use continue it will continue the inner loop ( which I don't want and if I use break instead, it will reset f to 1. What can I do to get what I want?

 Respuesta aceptada

Image Analyst
Image Analyst el 30 de Abr. de 2022
Reverse the order of the e anf f loops:
N = 4;
ODN = [ 4 5 4 4];
NP = 17;
ODD = [10000 10000, 5000 5000];
for f = 1:ODN(e,1):NP
for e = 1:N
L = tp(f:ODN(e,1),1);
[X,Y] = min(L,[],1);
xpC(Y,1) = ODD(f,1);
end
end
Now after it does this
L = tp(f:ODN(e,1),1);
[X,Y] = min(L,[],1);
xpC(Y,1) = ODD(f,1);
once, it will move to the next e in the list.

6 comentarios

Sherwin
Sherwin el 30 de Abr. de 2022
Editada: Sherwin el 30 de Abr. de 2022
but it still resets f after changing e. I need f to start from 1, then jump to 5 and then 10, and then 14 based on the ODN vector.
Image Analyst
Image Analyst el 30 de Abr. de 2022
Please list the values of e and f that you expect to see, in order, in your inner loop.
Sherwin
Sherwin el 30 de Abr. de 2022
e = [1 2 3 4]
f = [1 5 10 14]
Image Analyst
Image Analyst el 30 de Abr. de 2022
Please list what I asked for : the values of e and f in the inner loop on each interation. Like do you want these in the inner loop in this order:
e=1, f=1
e=1, f=5
e=1, f=10
e=1, f=14
e=2, f=1
e=2, f=5
e=2, f=10
e=2, f=14
e=3, f=1
e=3, f=5
e=3, f=10
e=3, f=14
e=4, f=1
e=4, f=5
e=4, f=10
e=4, f=14
Or do you maybe want
e=1, f=1
e=2, f=5
e=3, f=10
e=4, f=14
Or do you maybe want
e=1, f=1
e=2, f=1
e=3, f=1
e=4, f=1
e=1, f=5
e=2, f=5
e=3, f=5
e=4, f=5
e=1, f=10
e=2, f=10
e=3, f=10
e=4, f=10
e=1, f=14
e=2, f=14
e=3, f=14
e=4, f=14
Sorry but I'm quitting for the day so I'll check tomorrow.
Sherwin
Sherwin el 30 de Abr. de 2022
sorry I didn't understand the question before. Yes the second one is what I want:
e=1, f=1
e=2, f=5
e=3, f=10
e=4, f=14
You just need one loop to have them both increment in synchrony:
N = 4;
ODN = [ 4 5 4 4];
NP = 17;
ODD = [10000 10000; 5000 5000];
e = [1 2 3 4]
f = [1 5 10 14]
for k = 1 : length(f)
thisf = f(k);
thise = e(k);
L = tp(thisf:ODN(thise,1),1);
[X,Y] = min(L,[],1);
xpC(Y,1) = ODD(thisf,1);
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 30 de Abr. de 2022

Comentada:

el 30 de Abr. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by