While loop in while loop; Shortening

26 visualizaciones (últimos 30 días)
M_Szer
M_Szer el 7 de Oct. de 2019
Comentada: Turlough Hughes el 7 de Oct. de 2019
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)

Respuesta aceptada

Turlough Hughes
Turlough Hughes el 7 de Oct. de 2019
Editada: Turlough Hughes el 7 de Oct. de 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 comentarios
M_Szer
M_Szer el 7 de Oct. de 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 el 7 de Oct. de 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)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by