IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Boucle while avec conditions


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Boucle while avec conditions
    Bonjour à tous,

    J'ai la boucle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if Vit_P(end) == 0
        numero = length(t); 
        t_fed(:,1) = t(:,1);
        F_fed(:,1) = F(:,1);
        V_fed(:,1) = V_bio(:,1);
        Glc_fed(:,1) = Glc_conc(:,1);
        VCD_fed(:,1) = VCD_conc(:,1);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    elseif Vit_P(end) > 0
        numero = numero; 
        t_fed = t(numero:end);
        F_fed = F(numero:end);
        V_fed = V_bio(numero:end);
        Glc_fed = Glc_conc(numero:end);
        VCD_fed = VCD_conc(numero:end);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    end
    En gros ce que je veux c'est que dès que mon paramètre Vit_P>0, mon paramètre numero reste stable à la valeur à laquelle Vit_P devient >0.
    Le souci c'est que ma Vit_P peut redevenir égale à 0 et donc mon code modifie mon paramètre numero, ce que je ne souhaite pas !
    En fait je pourrais passer par une boucle while en disant :
    Tant que Vit_P == 0,
    Alors numero = length(t);
    [...]
    Dès que Vit_P > 0
    numero = numero
    [...]

    Mais je ne vois pas comment faire ...

    Est-ce que vous avez une idée ?

    Merci de votre aide,
    Aurelia

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tu peux ajouter un flag qui change d'état quand la condition est vérifiée la première fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    if Vit_P(end) == 0 && flag == false
        flag = true;
        numero = length(t); 
        t_fed(:,1) = t(:,1);
        F_fed(:,1) = F(:,1);
        V_fed(:,1) = V_bio(:,1);
        Glc_fed(:,1) = Glc_conc(:,1);
        VCD_fed(:,1) = VCD_conc(:,1);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    elseif Vit_P(end) > 0
        numero = numero; 
        t_fed = t(numero:end);
        F_fed = F(numero:end);
        V_fed = V_bio(numero:end);
        Glc_fed = Glc_conc(numero:end);
        VCD_fed = VCD_conc(numero:end);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    end
    Sans oublier d'initialiser le flag quelque part au début du code :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Juillet 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour Jérôme,

    Merci beaucoup pour votre réponse.
    Pour répondre à ma demande je ferais plus ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    flag = false;
    if Vit_P(end) == 0 && flag == false
        numero = length(t); 
        t_fed(:,1) = t(:,1);
        F_fed(:,1) = F(:,1);
        V_fed(:,1) = V_bio(:,1);
        Glc_fed(:,1) = Glc_conc(:,1);
        VCD_fed(:,1) = VCD_conc(:,1);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    else
        flag == true;
        numero = numero; 
        t_fed = t(numero:end);
        F_fed = F(numero:end);
        V_fed = V_bio(numero:end);
        Glc_fed = Glc_conc(numero:end);
        VCD_fed = VCD_conc(numero:end);
        V_fed0 = V_bio(numero); % en L 
        VCD_fed0 = VCD_conc(numero); %10^5.cell/mL 
    end
    Parce que là du coup si j'ai Vit_P = [0 0 0 1 0 0 2 3 4] (pour information Vit_P est un entier positif ou nul), il rentre une première fois dans le if avec Vit_P =0 et flag = false donc numero = length(t), pareil pour les deux fois après.
    Pour la 4ème itération, il entre avec Vit_P = 1 et flag = false donc il va direct au else avec flag = true et numero = numero.
    Pour la suite, vu que flag = true il ira obligatoirement dans la deuxième condition du if et donc numero = numero.

    Est-ce que vous êtes d'accord avec moi ?
    En tout cas merci beaucoup car je cherchais beaucoup plus compliqué que le "&&".

    Très bonne journée!
    Aurelia

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par AureliaDnr Voir le message
    Est-ce que vous êtes d'accord avec moi ?
    Oui
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle While avec nombre variable de conditions
    Par jazzybluesy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/09/2012, 19h05
  2. Boucle while avec 2 conditions OU
    Par loonis dans le forum Prolog
    Réponses: 4
    Dernier message: 25/05/2009, 22h05
  3. boucle for avec condition
    Par Daniel Magron dans le forum Delphi
    Réponses: 4
    Dernier message: 22/01/2007, 16h18
  4. Faire un while avec condition d'arrêt une durée
    Par schumi101 dans le forum Linux
    Réponses: 3
    Dernier message: 16/06/2006, 12h31
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo