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 :

Extraction de valeurs d une iteration


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    Par défaut Extraction de valeurs d une iteration
    Bonjour,

    je souhaite extraire d une boucle les valeurs utilisées par les differentes iterations :

    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
     
    clear all
    n=1;
    h=1;
    i = 0;
    j =0 ;
    for i = 1:5
     for j = 1:5
     x(n) = i   ;
     f(h) = j ;
      h = h+1 ;
     end
    n=n+1;
    end
     
    x
    f
    et je souhaite avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x= [1 2 3 4 5]
    f= [1 2 3 4 5]
    merci de votre aide,

    cordialement.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Merci de nous avoir mis ce que tu voulais...

    Voici de ce que je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i=1:5
      x(i)=i;
      f(i)=i;
    end
    x
    f
    Est ce que ça te va ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    heu oui enfin non

    c est a dire que ds cet exemple, l espace de recherche de i et j sont identique mais ds mon cas d etude, ce n est pas le cas...

    je modifie :
    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
     
    clear all
    n=1;
    h=1;
    i = 0;
    j =0 ;
    for i = 1:5
     for j = 5:10
     x(n) = i   ;
     f(h) = j ;
      h = h+1 ;
     end
    n=n+1;
    end
     
    x
    f
    et je veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x= [1 2 3 4 5]
    f= [5 6 7 8 9 10]
    merci ^^

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    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
    clear all
    n=1;
    h=1;
    i = 0; % ne sert a rien
    j =0 ; % ne sert a rien
    for i = 1:5
     for j = 1:5
       x(n) = i   ;
       f(h) = j ;
       h = h+1 ;
     end
     n=n+1; % n augmente avec i et j , au final n = 25 iteration + 1 = 26
    end
    Sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    x = 1:x_max;
    y = x_max:y_max;
     
    % avec x_max = 5 , et y_max = 10 dans l'exemple
    ++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Désolé mais je pense qu'il veut quelque chose du genre :

    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
    a=1;
    b=5;
    c=6;
    d=10;
     
    for i =a:b
      x(i)=i;
    end
     
    for i =c:d
      f(i)=i;
    end
     
    x
    f
    Je fais remarque concernant l'utilisation de double boucle for :
    La double boucle est utilisé quand on travaille en deux dimensions or ici tu ne travailles qu'en simple (vecteur)

    Ok ?

    Tu pourras remarquer que quand tu calcules "x", tu n'utilises pas la variable de la seconde boucle ("j") donc, ce calcul n'a rien à faire où tu l'as mis

    Et tant qu'à ton calcul de "f", tu le fais autant de fois qu'il y a d'itération sur "i".

    A la fin, tu auras un "f" de dimension length(i)*length(j) c'est à dire 25 dans ton cas...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Pour mr_samourai

    Es-tu sur de la valeur finale de ton "n" ??????

    Moi, je dirais qu'il se trouve que dans la boucle de "i" et donc il aura comme valeur finale :

    dans ton cas

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Désolé mais je pense qu'il veut quelque chose du genre :

    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
    a=1;
    b=5;
    c=6;
    d=10;
     
    for i =a:b
      x(i)=i;
    end
     
    for i =c:d
      f(i)=i;
    end
     
    x
    f
    Je fais remarque concernant l'utilisation de double boucle for :
    La double boucle est utilisé quand on travaille en deux dimensions or ici tu ne travailles qu'en simple (vecteur)

    Ok ?

    Tu pourras remarquer que quand tu calcules "x", tu n'utilises pas la variable de la seconde boucle ("j") donc, ce calcul n'a rien à faire où tu l'as mis
    oui cela ressemble d avantage a ce que je veux.

    en fait je souhaite faire 4boucles afin de calculer l ensemble des resultats d 'une fonction exprimee selon 4 variables. ensuite je cherche la valeur dt l erreur avec ma valeur de reference est minimale, mais ce n est pas l objet de ce post. voila pour ce que je souhaite faire.

    Je cherche d 'une part :
    - a extraire ds une matrice le nombre d iteration (1,2 3 etc jusqu a la fin de la boucle)

    et d autre part:
    - extraire dans une matrice l ensemble des valeurs utilisées par boucle (c est a dire que si je fais:

    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
     
    n = 1
    h = 1
    s =1
    for i = 1:5
     for g = 5:10 
      x(s) = 3i + g
      f(h) = g  
     end
    f(n) = i
    n =n+1
    end
     
    % je veux :
     
    x = [l ensemble des images de  ma fonction]
    f = [le nombre d iterations 1 2 3 4 5]
    g = [idem 5 6 7 8 9 10]
    j espere avoir ete plus clair,

    merci

  8. #8
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Pour mr_samourai

    Es-tu sur de la valeur finale de ton "n" ??????

    Moi, je dirais qu'il se trouve que dans la boucle de "i" et donc il aura comme valeur finale :

    dans ton cas

    oui t'as raison n = 6 , c'est plutot h = 26 .

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    clear all
    n = 1;
    s = 1;
    h = 1;
    for i = 1:5
     
     for j = 5:10 
     
      x(s) = (1 *  i) + j ;
      s = s+1;
     
      q(h) = j  ;
      h = h + 1 ; 
     
     end
     
    f(n) = i;
    n =n+1;
    end
     
    x
    q
    f
    voila, ce code sera plus clair, seul le vecteur q n est pas bon a mes yeux... les autres sont bons.

    je voudrai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    q = [5 6 7 8 9 10]

  10. #10
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    De un ,
    J'aime pas cette ligne, il ne faut pas toucher à l'iterateur.

    De deux,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      x(s) = (1 *  i) + j ;
      s = s+1;
    %deviens mieux
    x(i + j) = (1 *  i) + j ;
    De trois,
    je ne vois pas ou est h dans ton code ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Je cherche d 'une part :
    - a extraire ds une matrice le nombre d iteration (1,2 3 etc jusqu a la fin de la boucle)
    Pour ceci, je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mat=[1 2 3 4 5 6 7;1 2 3 4 5 6 7; 1 2 3 4 5 6 7];
    x_colonne=1:1:size(mat,1)
    x_ligne=1:1:size(mat,2)
    Je te laisse choisir ce que tu veux...

    Pour le reste, laisse moi un peu de temps, il faut que mes neurones refroidissent... lol

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    modifications ajoutees ci dessus.

    pour x et f, pas de soucis j obtiens ce que je souhaite.

    pour q, non , ca doit etre un pb de prise en compte de l iterations mais je ne vois pas comment avoir ce que je souhaite (voir ci dessus)

  13. #13
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    Un peu de contradiction :
    Citation Envoyé par mr_samurai Voir le message
    De un ,
    J'aime pas cette ligne, il ne faut pas toucher à l'iterateur.
    il n'y a pas cette ligne dans son code...
    Citation Envoyé par mr_samurai Voir le message
    De deux,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      x(s) = (1 *  i) + j ;
      s = s+1;
    %deviens mieux
    x(i + j) = (1 *  i) + j ;
    Non, car à la 1ère itération i+j vaut 2, et donc x(1) vaudra 0, tu décales tout de 1.

    Après je ne comprends toujours pas l'intérêt de calculer tes itérations dans les boucles.
    Pourquoi tu ne fais pas simplement (comme mr_samurai l'a proposé plus haut) :
    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
    ind_min_i=1;
    ind_max_i=5;
    ind_min_j=5;
    ind_max_j=10;
    f=ind_min_i:ind_max_i;
    q=ind_min_j:ind_max_j;
     
    %Initialisation pour s'affranchir de l'indiçage en s
    x=[];
     
    for i = 1:5
     for j = 5:10 
     
      x(end+1) = (1 *  i) + j ;
     
     end
    end
     
    x
    q
    f
    (et je réfléchis maintenant à voir si on ne peut même pas carrément enlever cette double boucle pour ton calcul à moins que tu aies juste simplifier ton code ?)

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    ATTENTION

    On arrive plus à s'entendre...

    Il y a des modifications et on répond trop vite...

    Rem: merci de supprimer ce message après que tout le monde l'ai lu... merci

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    clear all
    n = 1;
    s = 1;
    h = 1;
    for i = 1:5
     
     for j = 5:10 
     
      x(s) = (1 *  i) + j ;
      s = s+1;
     
      if i == 1
         q(h) = j  ;
         h = h + 1 ;
      end 
     
     end
     
    f(n) = i;
    n =n+1;
    end
     
    x
    q
    f
    Regarde juste la partie pour q (if)

    Ton calcul est bon, mais tu le répète "length(i)" fois

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 57
    Points
    57
    Par défaut
    La bonne reponse vient de caro95470 et mr_samurai ^^

    votre code est plus simple effctivement, et surtout plus facile a modifier.

    je vous remercie tous pour votre aide,

    cordialement

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Tu peux faire ceci :

    Ca peut t'aider à ne pas t'embrouyer dans tes boucles...

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

Discussions similaires

  1. [AC-2010] Extraction de valeurs d'une table vers nouveau formulaire
    Par kerbe dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/12/2013, 22h53
  2. Réponses: 12
    Dernier message: 27/03/2013, 15h15
  3. Réponses: 1
    Dernier message: 09/06/2011, 23h29
  4. Extractions de valeurs extrêmes dans une table
    Par natadel dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/04/2008, 12h09
  5. probleme d extraction de valeurs d'une tree
    Par adam57 dans le forum Forms
    Réponses: 6
    Dernier message: 24/03/2008, 22h30

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