Using break/continue in a for loop

5 次查看(过去 30 天)
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?

采纳的回答

Image Analyst
Image Analyst 2022-4-30
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 个评论
Sherwin
Sherwin 2022-4-30
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
Image Analyst
Image Analyst 2022-4-30
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by