Bonjour à tous,
Je poste ce message plutôt à titre d’information personnelle car ça fait déjà ce que je veux faire mais comme je sais que Matlab est truffé de raccourcis très puissants, je me demandais s’il n’y avait pas moyen de ré-écrire cette boucle en deux-trois lignes.
1 2 3 4 5 6 7 8 9 10 11 | for i=1:row if X(i)<0 threshold=i; break end end for i=threshold:row X(i) = 0; A(i) = A(threshold); end |
Pour vous mettre dans le contexte, $X$ est un vecteur avec des concentrations mais physiquement une concentration ne peut pas être négative. Je cherche donc le moment où elle devient négative et je met des zéros. Mon vecteur $A$ quant à lui doit rester constant à la dernière valeur trouvée (imaginons X devient négatif quant A vaut 100, on laisse A jusqu’à la fin). row désigne le nombre de ligne dans ces vacteurs ($A$ et $X$ ont la même taille).
Je sais que pour tout mettre à zéro il suffit de faire X(X<0) = 0 mais après je récupère pas l’index (du moins je pense?) donc je vois pas comment gérer $A$.
Avez-vous des idées ou ça vous paraît déjà "optimal" ?
Merci !