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 :

2 boucles for


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut 2 boucles for
    Bonjour tout le monde

    j'ai un petit algorithme à réaliser mais j'ai quelques difficultés , en effet je veux générer une matrice de 3 valeurs [A B C] avec comme valeur B= 1 constante , et la Valeur A incrémente de 1 jusqu’au la valeur choisie par l'utilisateur , tandis que la valeur C décrémente à partir de la valeur donnée , j'ai essayé de faire ça :

    x = input('valeur de x = ')

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i=1:x
        for m=i:-1:1
     
        A=[i 1 m]
     
        end
     
    end

    et ca m'affiche des valeurs un peu aléatoires , par exemple si je rentre un nombre de 10 , je dois avoir une matrice de 10 lignes partant de [1 1 10] jusq'au [10 1 1], si quelqu'un peut me corriger je serais trop reconnaissant et Merci.

    Cordialement.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    dans un premier temps tu devrais utiliser les même dénomination que préciser dans ton énoncer cela clarifiera peut être un peut ton code
    je ne connais pas le langage utilisé mais je pense que tu pourra aisément retranscrire dans ton langage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      x = input('valeur de x = ')
     
       //T: array[a,b,c]
       b:= 1;
       for a=1:x  do //+1
       begin
         for c=x:1  do //-1
           T=[a b c]
       end
    PS : après réflexion c'est peut être pas cela que tu voulais
    ne serait ce pas plutôt celui la ne te donne que l'inversion des extrême
    exemple :
    [10 1 01]
    [09 1 02]
    [08 1 03]
    [07 1 04]
    [06 1 05]
    [05 1 06]
    [04 1 07]
    [03 1 08]
    [02 1 09]
    [01 1 10]
    ce qui nous donne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       for a=1:x  do //+1
       begin
           c := 11 - a  ;
           T=[a b c]
       end
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse ,

    et pour ton 2éme code , je pense que c'est un cas particulier parcque la valeur entrée ,n'est pas toujours 10 ,ça varie !

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    tu as raison je me suis laisser importé par ma fougue

    il suffit de remplacer
    par
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    b=1;
     
    for a=1:x
     
      for c=x:-1:1
     
       A = [a b c]
     
    end 
     
    end
    j'ai 2 problémes , ca me fait un resultats comme ca :

    [1 1 10]
    [1 1 9]
    [1 1 8]
    .
    .
    .
    [2 1 10]
    [2 1 9]
    .
    .

    l'incremntation et la décre n'est pas simultané , ca parcoure toute la 2éme boucle avant que ca decremente une fois sur la première

    et lors de mes resultats , ca me garde pas les lignes , ca veut dire que j'ai pas un résultat de 10 lignes si je rentre un nombre de 10 , le programme a tendance d’écraser une ligne par la suivante :/

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ta 2éme solution marche trés bien , merci beaucoup

    il me reste que le probléme d'ecrasement , ca m'affiche à la fin comme si j'avais une seule matrice , la derniere.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    si je rentre les valeurs manuellement genre :

    [1 2 3]
    [4 5 6]
    [7 8 9]

    ça m'affiche que j'ai bien 3 matrices , mais avec mon code ça m'affiche que la dernière matrice générée :/

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    Le 'print' est hors de la boucle au lieu d'être dans la boucle. N'est-ce pas?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    ou et comment affiche tu ta matrice ?

    une solution pour sauvegarder la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      for a=1:x  do //+1
      begin
            c := (x+1) - a  ;
           T=[a b c];
           AfficheLigne(T);
      end
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      for a=1:x  do //+1
      begin
            c := (x+1) - a  ;
           T[a]=[a b c];
      end
      AfficheTableau(T);
    ne connaissant pas l'outil que tu utilise , il est difficile pour moi de deviner
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    j'utilise Matlab

    le truc c'est que ma boucle ne permet pas de réaliser une chose comme :

    [x x x]
    [x x x]
    [x x x]

    elle ne prends en compte que la dernière ligne , mon programme affiche correctement les matrices générés , mais quand je veux faire la somme des colonnes , ca ne marche pas , elle m'affiche que la derniere ligne , mais si je saisie des matrices manuellement sans boucle ça marche

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    je ne connais pas mathlab mais bon d’après ce que j'ai lu dans la faq

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     TABRES  = zeros(X,3); % préallocation du tableau numérique de taille Nx3
     for a=1:x  //+1
        c := (x+1) - a  ;
        TABINT=[a b c];
        TABRES(a,:) = TABINT;
      end
    il te reste plus qu'a afficher TABRES ... ceci devrais fonctionner
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    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
    Bonjour,

    on peut faire aussi l'économie d'une boucle for en remarquant que ce sont trois vecteurs colonnes concaténés les uns à la suite des autres.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    comment on peut faire ca ?

  14. #14
    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
    Un exemple :
    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
    >> a = [3 3 8].'
     
    a =
     
         3
         3
         8
     
    >> b = [9 5 2].'
     
    b =
     
         9
         5
         2
     
    >> c = [a b]
     
    c =
     
         3     9
         3     5
         8     2
    Il suffit de construire tes 3 colonnes et de les concaténer comme dans l'exemple.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai pensé à ça mais mon programme sert à automatiser les choses donc la saisie manuelle c'est pas l'objectif , et je peux pas concaténer les matrices générer par ma boucle for ? l'une après l'autre ? j'ai vu que c'est A[X;Y] mais moi j'ai une seule matrice A..

  16. #16
    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
    La saisie manuelle, c'est juste pour l'exemple, tu peux tout à fait automatiser, c'est exactement la même chose que pour la boucle for :
    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
    >> x=10
     
    x =
     
        10
     
    >> (1:x).'
     
    ans =
     
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
    et je n'ai pas compris ta question, si tu utilises une boucle, les tableaux sont déjà concaténés.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    par exemple si je saisi x= 10 , j'ai ca :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    x =
     
        10
     
     
    A =
     
         1     1    10
     
     
    A =
     
         2     1     9
     
     
    A =
     
         3     1     8
     
     
    A =
     
         4     1     7
     
     
    A =
     
         5     1     6
     
     
    A =
     
         6     1     5
     
     
    A =
     
         7     1     4
     
     
    A =
     
         8     1     3
     
     
    A =
     
         9     1     2
     
     
    A =
     
        10     1     1
    moi je veux plutot ca mais j'arrive pas à concaténer

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    x =
     
        10
     
    A= [
     
         1     1    10
     
     
     
         2     1     9
     
     
     
         3     1     8
     
     
     
         4     1     7
     
     
     
         5     1     6
     
     
         6     1     5
     
     
     
         7     1     4
     
     
     
         8     1     3
     
     
     
         9     1     2
     
     
     
        10     1     1]

  18. #18
    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
    Quel est ton code?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    disp('Entrer une valeur')
    x=input('valeur de x = ')
     
     
    b=1;
     
    for a=1:x 
     
        c = (x+1)-a; 
     
          A=[a b c]
     
     
        end

  20. #20
    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
    As-tu lu le message d'anapurna? Même si il y des erreurs de syntaxe, tu devrais pouvoir t'en inspirer pour mettre les valeurs dans des lignes différentes à chaque itération.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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