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 :

Calcul avec la boucle for et stockage des résultats


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Calcul avec la boucle for et stockage des résultats
    Bonjour,

    J'ai un problème au niveau du stockage de mes résultats en utilisant la boucle for. A la fin du calcul, il n'y a que la dernier calcul qui est stocké. Ci -après mon code :

    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
    % A est une matrice contenant les composantes de vecteurs
     
    nump=size(indice,1);
     
    for k=2:nump
     
    % Vecteur de reférence
     
    v1=[A(indice(1),4),A(indice(1),5)];
     
     
    v2 =[A(indice(k),4),A(indice(k),5)];
     
    p=dot(vp1,vp2);
     
    if p=o
       vp=v2;
    else
        vo=v2;
    end
     
    end
    Quelqu'un pourrait m'expliquer comment stocker mes résultats à chaque itération?
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    a=NaN(1,N);
    for i=1:N
        a_temp=rand(1,1);
        a(i)=a_temp;
    end
    À chaque itération, un nouveau a_temp est calculé et est stocké ensuite dans la matrice a. Ne pas oublier la première étape de préallocation.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Au fait j'ai une matrice A de dimension n*2. Chaque ligne correspond à un vecteur. J'aimerais calculer le produit scalaire du premier vecteur (première ligne) par rapport aux autres vecteurs ( 2ème ligne jusqu'à la nième ligne) et stocker les résultats. Comment vais je coder cela avec Matlab?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    La réponse a été donnée par thecrazydonut. Montre nous ce que tu as codé (même si c'est faux)

    Sinon, la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v1 = [A(indice(1),4),A(indice(1),5)];
    peut aussi s'écrire :

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Ci après mon code après quelques modifications faites suite à vos suggestions :

    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
    A est une matrice n*2
    indice est une matrice contenant des indices
    v22=zeros;
    nump=size(indice,1);
     
    for k=2:nump
     
    % Vecteur de reférence
     
    v1=[A(indice(1), 4:5)];
     
    Les autres vecteurs
     
    v2 =[A(indice(k),4:5)]; % 
     
    % v22(k) =v2;   Quand je mets cela, pour pouvoir stocker à chaque itération, ça ne marche pas; Le message d'erreur suivant apparaît "In an assignment  A(I) = B, the number of elements in B and I must be the same. "
     
    p=dot(vp1,vp2);
     
    if p=o
       vp=v2;
    else
        vo=v2;
    end
     
    end
    A la fin du calcul, j'obtiens que les résultats du dernier calcul. Pourriez-vous me dire ce qui fait que je n'arrive pas à stocker mes résultats?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    v22(k) ne représente qu'un seul élément, alors que v2 =[A(indice(k),4:5)]; possède deux valeurs. Tu ne peux stocker deux valeurs à la place qu'une seule.

    Concernant cette ligne : v22=zeros;, je te conseille de lire Qu'est-ce que la préallocation de mémoire ?.
    Une fois fait... ton tableau v22 sera au final de taille nump x 2 : ta préallocation se fera donc ainsi : puis le stockage :
    les deux points signifiant toutes la ligne, ici v22(k,1) et v22(k,2)

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

Discussions similaires

  1. legend avec une boucle for et des cell
    Par casabpm dans le forum MATLAB
    Réponses: 3
    Dernier message: 25/02/2012, 14h02
  2. trié des date avec une boucle for each
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/09/2009, 11h00
  3. cibler des clips imbriqués et placés avec une boucle for
    Par pierroM dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 01/02/2009, 22h05
  4. Réponses: 2
    Dernier message: 29/08/2006, 13h59
  5. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23

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