comment faire un branchement sur une boucle for en matlab ?
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

comment faire un branchement sur une boucle for en matlab ?



  1. #1
    invited5b2882d

    comment faire un branchement sur une boucle for en matlab ?


    ------

    bonsoir a tous
    j'ai un petit programme en matlab
    et mon problème c'est que quand en incremente le k donc (k=k+1) je veux faire un branchement a la boucle for i=1:(k+1) pour reprendre le traitement. j'ai essayer mais je n'arrive pa a le faire merci pour votre aide

    Code:
    for j=1:4
              for i=1:k  
                   instruction1;
                   instruction2; 
                   matrice(4*10);   
                   vecteur(4); 
                   position=find(matrice(j,:)==vect(i)); 
             if(length(position)==1) ;
                  position(i)=position ;
                else  
                k=k+1; 
             end 
        end 
       end
    
    
    matrice=
    
                 0     1     3     1     0     0     1     0     0     0
                 1     1     0     0     1     1     1     1     0     0
                 0     3     1     0     0     0     1     1     0     0
                 1     0     0     0     0     0     1     0     0     4
    
    
    vecteur =
    
                3     1     3     4
    Ajout de la balise Code pour la lisibilité.

    -----
    Dernière modification par JPL ; 18/12/2010 à 23h07.

  2. #2
    whoami

    Re : comment faire un branchement sur une boucle for en matlab ?

    Bonjour,

    Hors ton pseudo, il serait préférable d'être réaliste : poser la même question à 6 minutes d'écart n'encourage pas à te répondre, au contraire.

  3. #3
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    bonsoir whoami
    j'ai poser un seul probléme !!
    je voie pas l'inconvenient !!

  4. #4
    whoami

    Re : comment faire un branchement sur une boucle for en matlab ?

    Bonjour,

    Eh bien, les autres membres du forum le voient, l'inconvénient : 2 fois la même question en 6 minutes = dépêchez-vous, je suis très pressé.

    Et ici, personne n'est à tes ordres, et n'a à se presser pour toi.

  5. A voir en vidéo sur Futura
  6. #5
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    salut whoami
    et ben je me suis pas rendu compte que que je l'ai poster 2 fois de suite
    je suis désoler !!! mais il faut pas comprendre que je fait pression

  7. #6
    JPL
    Responsable des forums

    Re : comment faire un branchement sur une boucle for en matlab ?

    Doublon supprimé.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  8. #7
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    j'ai poser un probléme matlab et vous fait polémique sur autre chose !!
    je comprends rien dur tout!!
    est ce que c'est un forum d'entraide ou bien c'est un forum de critique

  9. #8
    JPL
    Responsable des forums

    Re : comment faire un branchement sur une boucle for en matlab ?

    C'est un forum d’entraide pour les gens qui ne sont pas agressifs. On t'a fait remarquer que tu avais posé deux fois la même question en 6 minutes et tu prétends ne pas t'en être aperçu.

    En outre tu n'as pas lu ceci http://forums.futura-sciences.com/pr...eau-forum.html car tu aurais su qu'il fallait utiliser la balise Code.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    bzh_nicolas

    Re : comment faire un branchement sur une boucle for en matlab ?

    D'un point de vue algorithmique, ce que tu as fait est plus que "casse gueule", à moins d'être très sur de toi et des données que tu traites. De plus, si tu n'initialise pas ton k avant de faire "for i=1:k" (tu ne nous le montre pas dans ton bout de code), il ne doit même pas rentrer dans la boucle.

    Il faut éviter autant que possible de modifier l'indice d'une boucle for à l'intérieur de la boucle (à moins d'avoir déjà traité tes données avant pour être certain de ne pas tomber sur des cas "particuliers" qui feraient tourner ta boucle à l'infini).

    Tu peux remplacer ta boucle for par une boucle while, ça devrait marcher.

  11. #10
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    bonjour bzh_nicolas
    a propos de mon indice k j'ai oublie de dire que k=10 (nobre de colonnes de matrice) au début de la boucle, mais dés que la condition (length(position)==1) n'est pas vérifier je veux incrémenter mon k et reprendre le traitement de la boucle

  12. #11
    bzh_nicolas

    Re : comment faire un branchement sur une boucle for en matlab ?

    Ok pour l'initialisation de la variable.

    Je ne connais pas matlab mais une recherche rapide me dit que les bornes d'une boucle for doivent être des constantes donc possible qu'il prenne uniquement la valeur de k de départ de ta boucle (donc 10) sans tenir compte de la modification que tu fais en cours de boucle.

    De toute façon comme je te l'ai dit, il est plus que recommandé de ne pas modifier la valeur d'un indice de boucle for dans le corps de celle ci, tu devrais la remplacer par une boucle while.

  13. #12
    fiatlux

    Re : comment faire un branchement sur une boucle for en matlab ?

    Salut,

    Tu pourrais me dire ce que tu essaies de faire concrètement ? Parce que il y a peut-être un moyen beaucoup plus simple de le faire.
    D'après ce que je vois tu as cette matrice et ce vecteur et tu cherches la position de la k-ième valeur du vecteur dans la j-ième ligne de la matrice c'est ça ?
    Et instruction1 et instruction2, elles font quoi ces fonctions?
    Et surtout les lignes :
    Code:
    matrice(4*10)
    vecteur(4)
    ...tu es bien conscient que c'est des constantes, ça ? (matrice(4*10)=4 et vecteur(4)=4)
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  14. #13
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    salut
    je veux dire par matrice(4*10) une matrice 4 lignes 10 colonnes, et vect(4) un vecteur ligne de 4 composante j'ai les notes comme ça juste pour étre plus explicite

    voici un bout de mon code: au début k=10


    Code:
    for j=1:4;    
        for i=1:k;
        voisin(j,1:k)=distance_ordonner(j,1:k);  
        [r c]=find(distance==voisin(j,i));
        position(j,i)=c;
        chiffre(j,i)=comparre(position(j,i));       
          for i=0:9
            [c]=find(chiffre(j,:)==i);
             nbr_occurence=length(c);
             cc(i+1)=nbr_occurence;  
          end
          matrice(j,:)=cc;
          vect(j)=max(matrice(j,:));
          position=find(matrice(j,:)==vect(j));
          if(length(position)==1)
              position(j)=position;
               else     
             k=k+1;
             end
       end         
     end

    avec
    distance =une matrice de 4*20
    distance_ordonner=sort(distanc e,2)
    commparre=vecteur de 20 composante il contient des valeurs de 0 à 9
    quand la condition (length(position)==1) n'est pas vérifier je veux faire un branchement la a la boucle i=1:k pour incrémenter le k jusqu'a a une certaine valeur
    j'ai essayer j'ai pas pu le faire, merci pour votre aide
    Dernière modification par yoda1234 ; 19/12/2010 à 15h30.

  15. #14
    fiatlux

    Re : comment faire un branchement sur une boucle for en matlab ?

    Bon, disons que je n'ai toujours pas vraiment compris ce que tu veux faire au niveau du code, mais disons que si tu veux sauter à la boucle i=1:k, ça revient à 1) incrémenter k, 2) réinitialiser i (car j'imagine que tu veux redémarrer avec i=1) et 3) quitter la boucle for en court, donc :
    Code:
    if(length(position)==1)
          position(j)=position;
    else     
          k=k+1; %incrémente k
          i=1; %réinitialise i
          continue; %passe à l'itération suivante, ce qui dans ton cas 
                   %revient à redémarrer la boucle car tu as réinitialisé i
    end
    et en fait le continue ne sert à rien car tu es déjà à la fin de la boucle for... L'important c'est de réinitialiser i.
    Dernière modification par fiatlux ; 19/12/2010 à 16h22.
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  16. #15
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    ok merci
    je vais essayer ça et je vais voir !! que est ce qu'il vas donner

  17. #16
    pat7111

    Re : comment faire un branchement sur une boucle for en matlab ?

    Citation Envoyé par fiatlux Voir le message
    Et surtout les lignes :
    Code:
    matrice(4*10)
    vecteur(4)
    ...tu es bien conscient que c'est des constantes, ça ? (matrice(4*10)=4 et vecteur(4)=4)
    Peut-etre veut-il les afficher ? (en tout cas, ce qui se passera)
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

  18. #17
    fiatlux

    Re : comment faire un branchement sur une boucle for en matlab ?

    Citation Envoyé par pat7111 Voir le message
    Peut-etre veut-il les afficher ? (en tout cas, ce qui se passera)
    Non, car lui il a mis des ";". D'ailleurs il a répondu plus loin:
    Citation Envoyé par realiste11 Voir le message
    je veux dire par matrice(4*10) une matrice 4 lignes 10 colonnes, et vect(4) un vecteur ligne de 4 composante j'ai les notes comme ça juste pour étre plus explicite
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  19. #18
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    merci baucoup fiatlux
    ça marche très bien

    mais ya un truc il faut changer quelque détails voila

    Code:
    if(length(position)==1)
           classe(j)=position;
            elseif (k<7)   % je demarre ma boucle de k=4 et j'arrete à k=7
               k=k+1;
               i=1;
           continue
          else
           classe(j)=position(1); %c'est un choix au hasard
    end
    Dernière modification par JPL ; 19/12/2010 à 19h15. Motif: Ajout de la balise Code

  20. #19
    JPL
    Responsable des forums

    Re : comment faire un branchement sur une boucle for en matlab ?

    Encore une fois tu n'as pas utilisé la balise Code !
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  21. #20
    fiatlux

    Re : comment faire un branchement sur une boucle for en matlab ?

    Content que ca marche
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  22. #21
    invited5b2882d

    Re : comment faire un branchement sur une boucle for en matlab ?

    ouiiii très content !
    merci a nouveau

  23. #22
    fiatlux

    Re : comment faire un branchement sur une boucle for en matlab ?

    lol en fait c'était pas une question, je parlais de moi ^^ je voulais dire "je suis content (pour toi) que ca marche"
    Mais je suis aussi content que tu sois content
    Bon...
    La pie niche-t-elle haut ? Oui, la pie niche haut.

Discussions similaires

  1. Matlab / Scilab : Remplacer une boucle FOR
    Par invitee5fedd72 dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 01/04/2014, 10h29
  2. Bloquer une colonne dans boucle for , Matlab
    Par magali. dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/07/2010, 02h34
  3. MATLAB Comment faire défiler des images?
    Par invite9f24019a dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 09/05/2008, 12h31
  4. comment appeler une fonction ecrite en C++ sur Matlab
    Par invite5c0c3007 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 17/06/2005, 14h35