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 :

Changez l'indice d'itération dans une boucle for


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut Changez l'indice d'itération dans une boucle for
    Bonjour à tous,

    Je me pose une question concernant la boucle FOR et j'aimerai que vous m'aidiez.

    Voilà est-ce possible de changer l'indice d'itération directement dans le boucle FOR, c'est-à-dire par exemple faire quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1:n
        b = b+1;
        if b == 5
            i = i+25
        end
    end
    Bon, l'exemple présenté n'a aucun intérêt mais je voulais savoir si c'était possible de faire quelque chose comme cela ?
    Sinon y-a-t-il une autre possibilité ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Non ce n'est pas possible.
    Il suffit d'essayer et tu verras que ton i=i+25 n'est pas pris en compte.

  3. #3
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut !
    peut-être un début de solution
    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
     
    j=1;
    for i = 1:n
        j=i
        b = b+1;
        if b == 5
            break;
        end
    end
    j=j+25;
    if j<=n
    for i=j:n
    ma_fonction();
    end
    end

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Sinon tu peux utiliser une boucle WHILE...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut
    Merci pour vos réponses.

    Oui, j'ai vu que ce n'était pas possible, malheureusement.
    Duf, ce n'est pas possible car la longueur de l'itération est fixée.
    Tubaas, ça aurait pu fonctionner mais j'avais besoin de faire plusieurs sauts pendant l'itération et surtout le nombre est variable...donc impossible avec ton idée !

    Voilà ce que j'ai fait, même si sur l'exemple en question c'est incohérent mais bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    p2 = 0;
    for i = 1:n
        if i >= p2 || p2 == 0
            b = b+1;
            if b == 5
                p2 = i+25;
            end
        end
    end

  6. #6
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par lekev62 Voir le message
    Duf, ce n'est pas possible car la longueur de l'itération est fixée.
    Et alors ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    p2 = 0;
    while p2<n+1
       b = b+1;
       if b == 5
          p2 = i+25;
       else
          p2=p2+1
       end
    end

Discussions similaires

  1. saut d'itération dans une boucle for
    Par ArnaudFu13 dans le forum MATLAB
    Réponses: 3
    Dernier message: 24/01/2013, 18h16
  2. Comment sauter une itération dans une boucle ?
    Par Kaeguri dans le forum Fortran
    Réponses: 3
    Dernier message: 20/04/2007, 12h30
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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