comment la sortie de deux imbriqués pour la boucle dans matlab
J'ai un while
de la boucle dans laquelle j'ai deux for
boucles. J'ai une condition au plus profond de la for
boucle. Chaque fois que cette condition est satisfaite, je veux quitter à la fois les deux for
de boucles et de continuer à l'intérieur de la while
boucle:
while (1)
for x=1:20
for y=1:30
if(condition)
end
end
end
end
Ne Matlab avez quelque chose comme un rapport marqué en Java, ou est-il une autre façon de le faire?
- double possible de Peut Matlab M-script d'être arrêté par une instruction dans le script?
- Selon la façon dont votre code est organisé, vous pouvez envelopper les boucles dans une fonction et
return
chaque fois que la condition est remplie - Je ne pense pas que c'est un doublon de cette
- lien: Comment puis-je sortir de boucles imbriquées à l'aide de la commande BREAK dans MATLAB 7.7 (R2008b)?
- Amit Kumar, @LuisMendo, découvrez ma nouvelle solution. 🙂
- Je suppose que vous voulez juste avoir un moyen de vérifier que le si est atteint seulement une fois, et le faire avec de bonnes performances? Ou êtes-vous intéressé dans les valeurs de
x
ety
après la boucle est cassé?
Vous devez vous connecter pour publier un commentaire.
Ici est une réponse très simple misant sur le fait que les tests de nombreuses conditions simples est presque gratuit:
Cette approche est très simple, facilement généralisée à un nombre de boucles et d'éviter les abus d'erreur de manipulation.
Un jamais si légèrement façon plus élégante que Luis Mendo est. 😉
Seulement légèrement plus élégante que A. Donda réponse (évite de tester les conditions deux fois):
quit
...quit
ou pour l'état (qui prend plus de temps), à droite?ndgrid
. Il n'y a pas besoin de testerquit
dans chaque itération de boucle, vous êtes déjà à l'essai pour la condition.Un peu de violence, un peu exagérer, mais le voici: c'est encore une autre façon
La bonne chose à propos de cette approche est qu'il fonctionne avec un nombre arbitraire de boucles imbriquées, et n'évalue
condition
une fois, sans avoir à stocker le résultat dans une variable.Inspiré par tmpearce commentaire.
Je suis conscient d'un seul assez peu élégante façon de le faire: vérifier l'état deux fois.
Une autre possibilité, ce qui évite d'utiliser deux
break
états: si vous n'avez pas à faire quoi que ce soit de l'extérieurfor
boucle à l'exception de l'appel de l'intérieurfor
boucle, vous pouvez les fusionner:immédiate de sortie pour les deux boucles for et continuer avec le reste de la boucle while.