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 :

Attempt to add "var" to a static workspace


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut Attempt to add "var" to a static workspace
    Bonjour

    Cette erreur apparait lorsque je définis certaines variables (celles qui ne sont pas définies en global) dans mes nested fonctions (principales ou subsidiaires).

    Ca me gêne de déclarer ces variables en global, étant donné que ces variables sont souvent nombreuses et temporaires.

    Comment faire... ?

    Merci

  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
    Par défaut
    Bonjour,

    peux-tu nous montrer un exemple de code qui génère cette erreur?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Cette erreur apparaît le plus souvent lorsque tu es en mode "Debug", et que tu tentes de définir une nouvelle variable qui n'existait pas au moment où tu as lancé l'exécution.
    Il te faut alors stopper le débogage, ou utiliser une variable déjà existante.

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Je ne pense pas être spécialement en mode Debug, je lance simplement dans la fenêtre de commande mon fichier m.

    Mon fichier m se présente ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function fonction_principale
     
       % "fonction_interface" contient seulement du code d'uicontrol.
       fonction_interface;
     
       function sous_fonction
     
          % des trucs... 
          eval(['K2',int2str(n),'=zeros(3);'])
          % des trucs
     
       end
     
    end
    fonction_interface contient une variable h29:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    h29 = get(UI.uncontrole,'title');
    Si je ne déclare pas h29 en global dans fonction_principale, ça plante.

    La ligne avec K2=... plante aussi dans les mêmes conditions. Je sais pas ailleurs que le eval est très sale, qu'il faudrait faire un beau K2{n} mais je reprends un code et je ne peux pas tout modifier (temps...).

    Voyez vous le problème?
    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonne chance pour contourner cela si tu veux vraiment conserver EVAL, et surtout si ta variable n peut être élevée.
    K2(n) ne figurant pas dans le workspace initial, la ligne contenant eval l'ajoute, et c'est cela qui le fait planter, tout comme le cas du Debug.
    La solution pour n = 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function sous_fonction
          K21 = [];
          % des trucs... 
          eval(['K2',int2str(n),'=zeros(3);'])
          % des trucs
     
    end
    Je te laisse imaginer ce qu'il faut ajouter si n varie de 1 à 1000
    Franchement, je serais toi, je ferais les modifications nécessaires afin de supprimer toutes les occurrences d'EVAL.
    eval(['K2',int2str(n),'=zeros(3);']) par rapport à K2{n} = zeros(3);, il n'y a pas photo.

    Concernant h29, quelle erreur obtiens-tu?

  6. #6
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    eval(['K2',int2str(n),'=zeros(3);']) par rapport à K2{n} = zeros(3);, il n'y a pas photo.
    Oui, ça c'est sûr... Après mon n varie entre 1 et 4, alors pourquoi pas. Je verrai si je peux supprimer le eval.

    Pour h29, exactement ma même erreur que le titre du topic, avec pour "var" "h29".

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