While loop in while loop; Shortening
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
M_Szer
le 7 Oct 2019
Commenté : Turlough Hughes
le 7 Oct 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)
0 commentaires
Réponse acceptée
Turlough Hughes
le 7 Oct 2019
Modifié(e) : Turlough Hughes
le 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.
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 commentaires
Turlough Hughes
le 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)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!