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 :

Encore problème avec ma boucle (2 pas )


Sujet :

MATLAB

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut Encore problème avec ma boucle (2 pas )
    Bonsoir à tous

    voila je galère encore pour remplir ma matrice bizare
    je trouve pas la bonne boucle ou autrement dit le bon incrément pour les collones j'ai trouvé la solution en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                   n=1;
                  for i=[1 3 9 11],
                      for j = 1:Y,
                          indice = [i n];
                          c(i,n)=1;
                          n=n+1;
    mais pour replir les ligne il ya deux pas un "pas =2" apres il change "pas =3" et ainsi de suite.
    voila ma matrice
    Aidez moi SVP
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    je te propose une possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    clear all
     
    val = 50;
     
    for saut=1:9:val;
        for lig=1:2:6
            M(saut+lig-1,round(saut/9)*6+lig) = 1;
            M(saut+lig-1,round(saut/9)*6+lig+1) = 1;
        end
    end
    Regarde comment j'ai construit les indices en fonction de leur séquence, et si tu as des questions, n'hésite pas.

    Et ce n'est sûrement pas la seule solution...

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse
    mais je suis désolé je n'ai rien pigé peux-tu m'expliquer stp un peu, il fait quoi ce code ,parceque là moi il m'affiche une énorme matrice????
    moi tous ce que je demande c'est juste une méthode pour faire 2 saut de ligne différents le nombre de fois que je précise

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Oui, j'avais mis une limite un peu haute pour "val", c'était pour voir si ça fonctionnait bien.

    si tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    clear all
     
    val = 19;
     
    for saut=1:9:val;
        for lig=1:2:6
            c(saut+lig-1,round(saut/9)*6+lig) = 1;
            c(saut+lig-1,round(saut/9)*6+lig+1) = 1;
        end
    end
    cela t'affichera la matrice voulue.
    Je te donne des explications dans mon prochain post.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut
    Merci Magelan

    malgré que j'ai pas encore compri qu'est ce que tu a fais mais ça marche;
    "j'attend tes explication mon ami"

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Alors quelques explications :
    tu veux remplir ta matrice de la façon 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
    20
    21
    22
    23
    24
    25
    26
    c(1,1) = 1			|
    c(1,2) = 1			|
    				|
    c(3,3) = 1			| bloc 1
    c(3,4) = 1			|
    				|
    c(5,5) = 1			|
    c(5,6) = 1			|
     
    c(10,7) = 1			|
    c(10,8) = 1			|
    				|
    c(12,9) = 1			| bloc 2
    c(12,10) = 1			|
    				|	
    c(14,11) = 1			| 
    c(14,12) = 1			|
     
    c(19,13) = 1			|
    c(19,14) = 1			|
    				|
    c(21,15) = 1			| bloc 3
    c(21,16) = 1			|
    				|
    c(23,17) = 1			|
    c(23,18) = 1			|
    (d'aileurs si tu voulais exactement cette matrice, pourquoi ne pas la construire à la main?)
    Donc pour les lignes, j'ai la séquence suivante :
    1 3 5 10 12 14 19 21 23
    et pour les colonnes :
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

    On peut remarquer qu'entre chaque bloc, il y a un écart de 9 entre chaque premier indice (en bleu)
    c'est pourquoi j'ai crée une variable saut ainsi (j'aurai donc les valeurs 1 10 19):
    et entre chaque indice de mes lignes à l'intérieur d'un bloc, j'ai un écart de 2, donc j'ai crée un indice qui me permette de parcourir un bloc (j'aurai donc les valeurs 1 3 5):
    Maintenant je sais que je peux atteindre tous les indices dont j'ai besoin.
    Ensuite saut+lig-1 me permet d'atteindre les indices des lignes pour chaque bloc (regarde ce que ça te donne en attribuant la valeur 1 à saut et 1, 3, ou 5 à ligne; puis 10 à saut et 1, 3, ou 5 à ligne, etc...

    Enfin round(saut/9)*6+lig sert pour les indices des colonnes :
    round(saut/9) représente le numéro du bloc dans lequel je me trouve (en commençant par 0 pour le premier bloc), je multiplie ce résultat par 6 car il y a 6 colonnes par bloc : j'aurai ainsi le nombre de colonne déjà traité avant le bloc dans lequel je me trouve. Et j'ajoute lig pour me déplacer afin de traiter chaque colonne de chaque bloc (je le fait une deuxième fois en ajoutant 1 (round(saut/9)*6+lig+1) pour traiter 2 colonnes adjacentes en même temps).

    Ouf! J'espère avoir été suffisamment clair, comme je l'ai dit, ce n'est sûrement pas la seule méthode et celle-ci suit ma logique... d'ailleurs si quelqu'un trouve quelque chose peut-être plus intuitif, je serais curieux de le voir...

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 175
    Points : 55
    Points
    55
    Par défaut
    bravo encor une fois mon vieux ,Je te tires mon chapeau

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

Discussions similaires

  1. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50
  2. [MySQL] Problème avec une boucle
    Par yayacameleon dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/03/2006, 09h53
  3. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41
  4. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42

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