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 :

Génération automatique de noms de variables


Sujet :

MATLAB

  1. #1
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut Génération automatique de noms de variables
    Bonjour

    Il me semble que la question a déjà été posée mais je ne trouve pas le sujet


    Pour faire simple, j'ai besoin de générer de façon automatiser un certain nombre de variables et de leur donner des noms. J'ai par exemple une variable indiceMax et je veux créer des variables dont les noms seraient de la forme hFig_n,où _n est l'indice de la variable de 1 à indiceMax, et donc obtenir hFig1, hFig2, hFig3...

    L'idée serait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for n=1:indiceMax
         hFig_  =  ...(initialisation de ma variable)
    end;

    Merci beaucoup !

  2. #2
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    voila ce que je ferai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    n=20; %nombre de variable a creer
    nom='hFig_'; %nom a donner a tes variables
     
    for i=1:n
        c=[nom num2str(i) '=0']; %initialisation de tes variables
        eval(c)
    end
    il y a surement plus beau, plus propre, plus mieux.

  4. #4
    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
    @chris05 : voir mon post juste au-dessus
    Il ne faut surtout surtout pas faire cela.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    effectivement !

    j'aurais également privilégié un tableau de cellule ou matrice, mais Bktero ayant demandé des variables distinctes...

    Il est vrai que cela entrainera des difficultés dans l'analyse du code (appelle des varibles créées) et une perte d'efficacité avec l'évaluation constante de chaines de caractères.

    Bktero, suit les conseils du lien de caro-line ^^

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    C'était dans la FAQ.... Je suis vraiment un gros noob (>_<)

    Je vais lire ça.

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    Après avoir lu la FAQ et les liens, je ne comprenais pas comment m'en sortir avec l'histoire de tableau. Je revenais donc ici pour poser des questions quand je vois un post de Chris que je n'avais pas lu (il a du le poster quand je tapais le mien et j'ai mis longtemps avant de cliquer sur "envoyer la réponse").

    Et je comprend en fait qu'il ne faut pas créer plusieurs noms de variables, mais faire un tableau de variables et y accéder grâce à l'index... J'ai été long à la détente sur ce coup là... Du coup, mon code deviendrait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for n=1:indiceMax
         hFig(n)  =  ...(initialisation de ma variable)
    end;
    si j'ai tout bien compris ?


    EDIT : si mes variables sont des handles vers des objets graphiques, à priori de types différents, est ce que tous les handles seront de même type et de même dimension ? Ie, faudra t-il utiliser une matrice ou un tableau de cellules ?

  8. #8
    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 handle est tout simplement un double (numérique) donc tu peux utiliser un tableau de doubles tout simplement.
    Le code que tu as mis devrait fonctionner (à moins que tu ne crées plusieurs objets à la fois dans ton initialisation)

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    D'accord

    En fait, j'avais trouvé une solution avant que vous ne répondiez, mais un peu en détournant le problème, et j'étais justement arrivé à un tableau de handles. En fait, je fais un plot d'une matrice, qui fait donc une courbe par colonnes, et je voulais pouvoir accéder aux handles de chacune des courbes, pour modifier les attributs Ydata (je fais une visualisation en directe de ce qui sort de mon boitier d'acquisition de sons).

    Et en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    plot(handleMesAxes,maMatrice);
    tabHandlesPlot = get(handleMesAxes,'children');
    j'ai obtenu une solution, qui confirme bien ce que dit la FAQ et que tu as dit : il ne faut pas créer des noms de variables, il faut faire un tableau

  10. #10
    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
    Oui enfin il y a plus simple (et plus sur aussi car l'objet Axes pourrait avoir d'autres enfants) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabHandlesPlot =plot(handleMesAxes,maMatrice);

  11. #11
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    J'ai essayé de faire et il me semble qu'il m'a renvoyé une erreur

    Grr je m'en vais réessayer, ça parait tellement logique et facile

  12. #12
    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
    Citation Envoyé par Bktero Voir le message
    J'ai essayé de faire et il me semble qu'il m'a renvoyé une erreur
    Laquelle ?
    Et sinon tu as essayé ce que j'ai dis juste au-dessus ?
    Toutes les créations d'objets te renvoient leur(s) handle(s), c'est donc un peu dommage de vouloir les regénérer.

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

Discussions similaires

  1. Incrémenter automatiquement des noms de variables ?
    Par Cycy19 dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2014, 10h12
  2. Réponses: 11
    Dernier message: 09/03/2009, 21h43
  3. Génération automatique de noms de fichiers
    Par 84mickael dans le forum Langage
    Réponses: 7
    Dernier message: 02/05/2008, 09h41
  4. Réponses: 5
    Dernier message: 10/04/2008, 19h07
  5. Evolution automatique du nom d'une variable
    Par kevinl dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2007, 14h37

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