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?

 Réponse acceptée

Image Analyst
Image Analyst le 30 Avr 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 commentaires

Sherwin
Sherwin le 30 Avr 2022
Modifié(e) : Sherwin le 30 Avr 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 le 30 Avr 2022
Please list the values of e and f that you expect to see, in order, in your inner loop.
Sherwin
Sherwin le 30 Avr 2022
e = [1 2 3 4]
f = [1 5 10 14]
Image Analyst
Image Analyst le 30 Avr 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 le 30 Avr 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by