While loop in while loop; Shortening

23 views (last 30 days)
I want an overall while loop that is executed until a certain condition is true (let's say J=13).
The whole loop starts with J=5 and j=1 and inside the while loop j is raised +1 until j =J. Then the second while loop starts with J = J+1.
How can I shorten this code with one while loop ?
J=5;
j=1;
while (j<7)
if (j>J)
break
end
z=63*pi*(J-j);
j=j+1;
disp(z)
end
J=J+1;
j=1;
while (j<7)
if (j>J)
break
end
z=63*pi*(J-j);
j=j+1;
disp(z)
end
J=J+1;
j=1;
while (j<7)
if (j>J)
break
end
z=63*pi*(J-j);
j=j+1;
disp(z)
end
..... (and so on until J=13)

Accepted Answer

Turlough Hughes
Turlough Hughes on 7 Oct 2019
Edited: Turlough Hughes on 7 Oct 2019
You could try the following.
J=5;
while J<13
if J>=7
j=1:6;
else
j=1:J;
end
z=63*pi.*(J-j); %piecewise multiplication
disp(z)
J=J+1;
end
This satisfies the conditions of j less than or equal to J and j less than 7.
Note the .* operation (see link)
When j is not changing in size, i.e. after the first two iterations of the loop, you could in fact get a solution therein without any loops:
j=1:6;
J=[7:13]';
z=63*pi.*(J-j)
  2 Comments
M_Szer
M_Szer on 7 Oct 2019
Thank you !!
Is it possible to create a table with J on the row , j on the column and z in the cross section ?
j\J 5 6 7 8 9 ...
1 z z z z z
2 z z z z z
3 z z z z z
.....
Turlough Hughes
Turlough Hughes on 7 Oct 2019
You just need to rearrange your order when initially specifying j and J. i.e. j is now a column vector while J is now a row vector.
j=[1:6]';
J=7:13;
z=63*pi.*(J-j)

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!