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 :

Regroupement de Variables [Débutant]


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut Regroupement de Variables
    Dans mon workspace, ce trouve N (N variable selon les exécutions) variables se nommant:
    NOM_1, NOM_2, NOM_3, ... , NOM_N

    J'aimerais les regrouper toutes dans une seule variable (matrice).
    Exemple: NOM avec NOM(1)=NOM_1
    NOM(2)=NOM_2
    .
    .
    .
    NOM(N)=NOM_N

    J'avais essayé avec un classique "for", mais NOM_i, est reconnu comme une nouvelle variable, et non comme une incrémentation de variable.
    Code: for i=1:N
    NOM(i)=NOM_i
    end

    Quelqu'un aurait une idée ?
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Salut,

    Maîtrises-tu la création de ces variables (je présume que non mais bon)?

    Sinon tu peux bidouiller un truc comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NOM{n} = eval(['NOM_', num2str(n)]);
    mais c'est pas franchement le genre de code à recommander
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut, tu ne peux pas faire varier un nom de variable aussi simplement que ca. Il y a tout un chapitre là-dessus dans la faq... A croire qu'elle ne sert pas beaucoup

    variable

    Dans ton cas, suffit de passer ton nom de variable en chaine de caractère comme te l'as indiqué duf

  4. #4
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Malheureusement, je ne contrôle pas leur création, et je ne peux agir qu'une fois qu'elles sont crées.

    Mais MERCI BEAUCOUP, ça marche, même si je comprends pas tout ce que tu fais
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Arf, ca ne sert pas à grand chose de faire du code sans comprendre ce qu'on fait.

    Dans l'exemple de Duf :

    tu crées une variable NOM qui est de classe cell. Ce sont des cellules. Dans chaque cellule que tu crées, tu y places les valeurs des différentes variables NOM_i.

    Le terme entre crochet te permet de recréer par concaténation les variables NOM_i.

    NOM entre guillemet est une chaine de caractère. i, l'indice de ta boucle est un double. Tu utilises alors num2str pour faire passer d'un double à une chaine de caractère l'indice i.

    a ce moment là, NOM_i est une chaine de caractère. Tu utilises enfin eval sur le tout pour récupérer les valeurs à l'intérieur de ta variable NOM_i

  6. #6
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Merci pour ces éclaircissements
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

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

Discussions similaires

  1. Regrouper des variables d’une base de données en SAS
    Par Sokol dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 20/09/2013, 15h51
  2. Regroupement de variables
    Par LilyP dans le forum SAS Base
    Réponses: 4
    Dernier message: 22/05/2012, 10h42
  3. Regrouper des variables dans une nouvelle classe
    Par saraharas dans le forum SAS Base
    Réponses: 2
    Dernier message: 13/06/2011, 15h27
  4. [Vxi3] Regroupement de variables jointes via deux univers
    Par Baldenschaft dans le forum Deski
    Réponses: 1
    Dernier message: 15/05/2010, 15h13
  5. Sql : regrouper des variables
    Par matybouch dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2007, 13h48

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