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 :

Donner un nom à une variable


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut Donner un nom à une variable
    salut,
    mon problème de ce début d'après midi:

    j'ai une liste de nombre, et je dois créer une cell avec chacun de ces nombres inclus dans le nom de la cell:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    liste=[1 2 5 8];
    for i=1:length(liste)
    CellName=['NomDeLaCell_',num2str(liste(i),'%2.2i')];
    CellName(1,1)={[y1,y2]};
    end
    et évidemment, la cell créée par matlab se nomme CellName et non pas NomDeLaCell_01 comme je le voudrais (du moins pour la 1ere valeur).
    Comment qu'on fait?

  2. #2
    Expert confirmé
    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
    Par défaut
    Quel est l'intérêt de faire ceci ?
    Pourquoi ne pas utiliser des cell de cell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liste=[1 2 5 8];
    for i=1:length(liste)
       CellName{liste(i))(1,1)={[y1,y2]};
    end
    Voir la
    Comment créer des variables nommées A1, A2, A3, ...,AN ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut
    L'intérêt est que dans tous les codes qui suivent (et il y en a beaucoup), les cells sont nommées NomDeLaCell_01, NomDeLaCell_02, ...
    Alors, une idée pour faire ceci?

  4. #4
    Expert confirmé
    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
    Par défaut
    C'est une très très mauvaise pratique.
    Tu n'as pas moyen de changer cela ?
    Car c'est faisable et je vais te donner la réponse mais cela donne un code très moche et surtout peu maintenable et "debugable".

    Enfin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    liste=[1 2 5 8];
    for i=1:length(liste)
        CellName=['NomDeLaCell_',num2str(liste(i),'%2.2i')];
        chaine_a_evaluer=[CellName,'(1,1)={[y1,y2]};'];
        eval(chaine_a_evaluer);
    end

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Par défaut
    Merci, ca marche
    N'en déplaise aux informaticiens, un physicien (comme moi) se fout qu'un code soit beau ou moche! Tout ce qui l'intéresse c'est que ce code marche!

  6. #6
    Expert confirmé
    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
    Par défaut
    Certes je comprends bien mais quand je parle de la "beauté" du code
    c'est surtout un problème de réutilisabilité (ouf! mon dico me dit que ce mot n'existe pas et ben tant pis).
    Si tu fais ce code pour ne l'utiliser qu'une fois dans un but bien précis après tout pourquoi pas, peu importe que ce soit codé "avec les pieds"

    Le problème c'est si par hasard ton code doit être repris par quelqu'un d'autre (ou même par toi + quelques mois),
    il risque d'être difficilement compréhensible et modifiable.

    Maintenant chacun est libre (malgré mon côté tyrannique et surtout allergique à EVAL).
    C'est juste pour prévenir des risques potentiels et non négligeables

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Il n'est pas question ici de faire du code beau ou moche.
    Il s'agit de faire du code robuste, efficace et lisible (les 3 piliers de la programmation)

    De nombreux développeurs sous MATLAB ne sont pas des informaticiens pur jus, ce qui ne les empêchent pas d'appliquer les bonnes pratiques de la programmation informatique.

    Maintenant, rien ne vous oblige effectivement à suivre/apprendre ces règles...

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

Discussions similaires

  1. fichier texte avec comme nom une variable
    Par olobo dans le forum Débuter
    Réponses: 4
    Dernier message: 04/01/2010, 15h55
  2. Supprimez un fichier excel qui a pour nom une variable
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2009, 11h53
  3. donner un nom à une forme (shape)
    Par danest dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2008, 14h36
  4. Réponses: 2
    Dernier message: 07/09/2007, 20h48
  5. incrémenter le nom une variable
    Par mederic dans le forum C
    Réponses: 15
    Dernier message: 06/05/2006, 19h11

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