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 :

Variables globales à partir d'une chaine de caractères


Sujet :

MATLAB

  1. #1
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut Variables globales à partir d'une chaine de caractères
    Bonsoir,

    J'ai vecteur type char et je veux définir chacun de ces élément comme une variable globale. j'ai essayé la fonction eval mais ça marche pas
    je veux obtenir a, b, c, d et e comme des variables globales.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> GLOB='abcde';
    >> eval(['global ' GLOB(1)])
    Mais tu cumules deux outils déconseillés : eval et l'utilisation de variables globales...

  3. #3
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Merci, c'est très bien
    En fait je continue ce que je veux faire.
    Avec votre aide je peux maintenant définir automatiquement plusieurs variables comme globales et les utilisés après dans des fonction.
    Je donne l'exemple suivant :

    Le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    clear all
    clc
    GLOB='abcde';
    eval(['global ' 'GLOB'])
    for i=1:numel(GLOB)
        eval(['global ' GLOB(i)])
    end
    a=2;
    b=3;
    c=4;
    test
    La fonction test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function test
    eval(['global ' 'GLOB'])
    for i=1:numel(GLOB)
        eval(['global ' GLOB(i)])
    end
     
    a*b*c

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    A quoi ça sert de passer par une variable GLOB si tu sais que tes variables s'appellent a, b et c ?

    Tu pourrais faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clear all
    clc
    global a b c d e
    a=2;
    b=3;
    c=4;
    test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function test
    global a b c
    a*b*c
    Et dans l'exemple que tu donnes les variables globales sont inutiles, il est préférable d'utiliser des variables en entrées de ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clear all
    clc
    a=2;
    b=3;
    c=4;
    test(a,b,c)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function test(a,b,c)
    a*b*c

  5. #5
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Citation Envoyé par magelan Voir le message
    A quoi ça sert de passer par une variable GLOB si tu sais que tes variables s'appellent a, b et c ?
    Au début de ma question j'ai voulu mettre un hint et dire que le choix de ces variables a, b, c et d est aléatoire, car dans le traitement que je dois faire je sais pas les noms de ces variables et leur nombres....

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

Discussions similaires

  1. [Débutant] appeler une variable à partir d'une chaine de caractères
    Par caoutchouc159 dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/04/2012, 11h56
  2. Assignation de variables à partir d'une chaine de caractères
    Par Yorel2006 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/04/2009, 14h58
  3. Réponses: 2
    Dernier message: 29/01/2009, 18h59
  4. Réponses: 2
    Dernier message: 20/07/2007, 16h17
  5. Entrée a partir d'une chaine de caractère
    Par Spartan03 dans le forum C
    Réponses: 5
    Dernier message: 18/03/2006, 19h48

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