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 :

Problème variable locale sur MATLAB


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut Problème variable locale sur MATLAB
    Bonjour,

    Je réalise actuellement une interface graphique a l'aide du logiciel
    matlab version R2006a et je rencontre un problème.

    J'ai tout d'abord créer mon interface graphique à l'aide du "guide" puis
    je l'ai récupéré dans ma fenêtre de commande sous forme de script.
    Puis j'ai rentré les différentes lignes de code necessaire au
    fonctionnement de mon interface.

    Et c'est la ou j'ai rencontré un problème.
    Le but de l'interface est de commander un générateur et pour cela j'ai
    besoin de récupérer les variables définis dans les différents fonctions
    de l'interface.
    Le problème c'est que ces variables sont des variables locales et elles
    ne peuvent donc etre utilisées en dehors de leur femplacement. De plus
    elle n'apparaissent pas dans le workspace.

    J'ai donc essayé la fonction whos mais il n'y a aucune variable de
    reconnue.

    Auriez vous une solution afin que je puisse récupérer ces variables
    locales?

    Je vous remercie d'avance et je reste a votre dispositon pour n'importe
    quelles questions.

  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
    Bonjour,

    Plusieurs solutions existent pour transférer des données d'un workspace à l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    %Dans le code du GUI :
    save monfichier.mat;%sauvegarde TOUTES les variables, help save pour voir comment sauvegarder seulement certaines variables
     
    %Dans le workspace Matlab :
    load monfichier.mat;
    Si tu n'as que quelques variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    %Dans le GUI
    setppdata(0,'donnee1',donnee1);%A faire pour chaque variable souhaitée
     
    %Dans Matlab
    donnee=getappdata(0,'donnees1');
    Et il y a sûrement encore plein d'autres solutions...

    Caroline

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut
    le problème c'est quel n'apparaissent pas a la base dans mon workspace....c'est ça que j'aimerais bien faire....

  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 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 est possible d'utiliser ASSIGNIN, mais les solutions données par caro95470 sont bien meilleures

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut
    donc il faut que je mettes le setappdata dans le programme de l'interface et le get sur un nouveau .m c ca?

  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
    Oui.
    Utilise le setappdata sur la variable après lui avoir donner la valeur que tu souhaites récupérer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %n'importe où dans le fichier .m du GUI
    valeur=3;
    setappdata(0,'mavaleur',valeur);
    Après tu peux la récupérer où tu veux (workspace Matlab ou autre fonction suivant ce que tu veux en faire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valeur= getappdata(0,'mavaleur');
    Attention si tu veux la mettre à jour, il faudra refaire un setappdata, ce n'est pas mis à jour automatiquement.

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut
    ok!ca fonctionne avec les deux astuces!
    Par contre, j'ai une autre question...
    Maintenant c'est bon j'arrive a obtenir mes variables mais il y en a certaines qui sont défini en double alors qu'elles sont entre apostrophe et devrait etre en char...Vous savez pourquoi?

  8. #8
    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
    Citation Envoyé par nuans
    certaines sont défini en double alors qu'elles sont entre apostrophe et devrait etre en char...Vous savez pourquoi?
    Un petit exemple serait plus clair.

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut
    dans ton workspace tu as des variables avec leur caractéristique.
    T'as une caractéristique qui s'appelle class.Cela te défini t'a variable en CHAR ou DOUBLE. dans mon programme j'ai celaexemple d'une partie de mon script):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (get(hObject,'value')==get(hObject,'Max')
        predistor='true'
     
    else
       predistor='false'
     
    end
     
    setappdata(0,'predistor',predistor);


    Donc la variable devrait etre en CHAR...et ben elle est en DOUBLE....vous connaissez la raison?

  10. #10
    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
    Je ne comprends pas bien.
    A quel moment ta variable est-elle en double ?
    Peux-tu montrer quelle manipulation te dit que c'est un double ?
    Pour moi dans le workspace Matlab :
    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
     
    >> predistor='true'
     
    predistor =
     
    true
     
    >> setappdata(0,'predistor',predistor);
    >> a=getappdata(0,'predistor')
     
    a =
     
    true
     
    >> whos a
      Name      Size                    Bytes  Class
     
      a         1x4                         8  char array
    donc je ne vois pas quel est ton problème.
    à moins que ce ne soit un problème de version de Matlab (je suis en 7.1) mais à part transformer 'true' en 1 et en booléen, ça me parait louche.

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 71
    Par défaut
    c'est bon tout fonctionne!!!!!!

    Merci a tous!!!!!!!!!!!!!!!!!

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

Discussions similaires

  1. problème d'axes sur MATLAB
    Par rolandperes dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/07/2015, 17h07
  2. problème Blast local sur serveur RedHat
    Par jobim08 dans le forum Administration système
    Réponses: 0
    Dernier message: 18/02/2009, 17h01
  3. Problèmes Variables locales
    Par JUPIL dans le forum MATLAB
    Réponses: 6
    Dernier message: 26/04/2008, 18h51
  4. problème variable publique sur userform
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2007, 06h36
  5. Réponses: 2
    Dernier message: 11/09/2006, 12h22

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