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 :

additionner 3 variables dans 3 fichiers .m différents


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut additionner 3 variables dans 3 fichiers .m différents
    Slt,

    j'ai un petit souci si quelqu'un peut m'aider!

    j'ai 3 variables de valeur numérique chacune dans un fichier .m differents, je veux les additionner et afficher la reponse.

    donc j'ai declaré mes variables comme variable global
    et j'ai essayer de déclarer mes variables en variables d'entrée et sortie
    mais j'ai tjrs le message d'erreurs que la variable .... X..... est indéfinie

    je vous montre un peu mon code:
    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
    19
    20
    21
    22
    23
    24
    25
    global val_tot;
     
    function Add_Callback(hObject, eventdata, handles)
    val_tot = getappdata(gcbf,'val_TF') + getappdata(gcbf,'val_GT') + getappdata(gcbf,'val_PT')
    setappdata(gcbf,'val_tot',val_tot);
    save val_tot; 
     
     
    global val_tot2;
    function  Add_Callback(hObject, eventdata, handles)
    val_tot2= getappdata(gcbf,'val_IL') + getappdata(gcbf,'val_IS') + getappdata(gcbf,'val_BC')
    setappdata(gcbf,'val_tot2',val_tot2);
    save val_tot2;
     
    global val_tot3;
    global val_ScT;
    function  Add_Callback(hObject, eventdata, handles)
     
    val_tot3= getappdata(gcbf,'val_IP') + getappdata(gcbf,'val_P') + getappdata(gcbf,'val_CT')
    setappdata(gcbf,'val_tot3',val_tot3);
    save val_tot3;
     
     val_ScT=  val_tot + val_tot2 + val_tot3; 
     setappdata(gcbf,'val_ScT',val_ScT)
     save val_ScT;
    voila mon bout de code , chacune de ses fonctions est dans un fichier .m,
    ma variable finale que j'additionne c'est val_ScT, ca me donne toujours vide

    aidez moi svp
    merci

  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 830
    Points
    14 830
    Par défaut


    Tout ça n'est pas très clair.

    Tout d'abord les variables globales c'est mal, autant ne pas les utiliser.
    En plus là je ne vois pas à quoi elles pourraient te servir vu que tu utilises GET/SETAPPDATA...

    Par contre dans ta dernière fonction c'est ça que tu oublies de faire :
    Utiliser GETAPPDATA pour récupérer les valeurs de val_tot*
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse,

    Voila: val_tot, val_tot2, val_tot3 : 3 variables dans différents fichiers .m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val_ScT = val_tot + val_tot2+ val_tot3
    val_ScT est ma variable finale que je cherche mais pour l'instant est toujours vide.

    J'ai essayer cela aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    val_ScT= getappdata(gcbf,'val_TF') + getappdata(gcbf,'val_GT') + getappdata(gcbf,'val_PT')+getappdata(gcbf,'val_IL') + getappdata(gcbf,'val_IS') + getappdata(gcbf,'val_BC')+getappdata(gcbf,'val_IP') + getappdata(gcbf,'val_P') + getappdata(gcbf,'val_CT')
    La valeur est toujours vide

    Merci de ton aide

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pourrais-tu nous montrer comment tu sauvegardes tes différentes variables?

    Tu devrais peut-être mettre un identifiant de figure plus parlant que GCBF car des fois cela peut occasionner des surprises.

    Bonne apm,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Re,

    j'utilse juste save.... pr sauvgarder mes variables

    concernant gcbf, est ce que tu peux m'expliquer un peu plus, je suis débutant, je ne connais pas tout !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    val_ScT= getappdata(gcbf,'val_tot')+ getappdata(gcbf,'val_tot2')+getappdata(gcbf,'val_tot3');
    setappdata(gcbf,'val_ScT',val_ScT)
    save val_ScT;
    j'ai essayé ça mais malheureusement , je n'arrive plus a voir la variable

    mon but est d'additionner la valeur de val_tot, val_tot2, val_tot3
    merci pr ton aide

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Normalement, pour sauvegarder tes variables var_tot... tu dois utiliser SETAPPDATA si tu veux pouvoir les récupérer avec GETAPPDATA, c'est ce code là que je te demandais.

    Sinon si tu les sauvegardes avec SAVE dans ce cas il faut les recharger avec LOAD, bien que ca ne paraisse pas être la solution la plus adéquate.

    Quant au GCBF, il te retourne l'identifiant de la figure courante, si durant l'exécution de ton programme tu n'as qu'une seule figure d'ouverte, tu peux l'utiliser sans problème, sinon il faut être attentif de bien charger les variables dans le workspace de la figure où elles ont été stockées.
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Pour l'instant j'ai suivi tes consignes mais le résultat ne change pas:
    je te montre mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function  Add_Callback(hObject, eventdata, handles)
     
    val_tot3= getappdata(gcbf,'val_IP') + getappdata(gcbf,'val_P') + getappdata(gcbf,'val_CT')
    setappdata(gcbf,'val_tot3',val_tot3);
     
    function  Add_Callback(hObject, eventdata, handles)
    val_tot2= getappdata(gcbf,'val_IL') + getappdata(gcbf,'val_IS') + getappdata(gcbf,'val_BC')
    setappdata(gcbf,'val_tot2',val_tot2);
     
    function Add_Callback(hObject, eventdata, handles)
    val_tot = getappdata(gcbf,'val_TF') + getappdata(gcbf,'val_GT') + getappdata(gcbf,'val_PT')
    setappdata(gcbf,'val_tot',val_tot);
    pour calculer ma variable val_ScT qui est la somme de val_tot, val_tot2, val_tot3, j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      val_ScT= getappdata(gcbf,'val_TF') + getappdata(gcbf,'val_GT') +getappdata(gcbf,'val_PT')+getappdata(gcbf,'val_IL') + getappdata(gcbf,'val_IS') + getappdata(gcbf,'val_BC')+getappdata(gcbf,'val_IP') + getappdata(gcbf,'val_P') + getappdata(gcbf,'val_CT')
    % % val_ScT= getappdata(gcbf,'val_tot')+ getappdata(gcbf,'val_tot2')+getappdata(gcbf,'val_tot3');
      setappdata(gcbf,'val_ScT',val_ScT)
    merci pr ton aide

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Dans ton premier code, tu as regroupé les fonctions de tes 3 fichiers M c'est bien ca?

    Sinon, comment sauvegardes-tu tes variables val_IP, val_P, ... ?

    Pour mieux voir ce qui se passe, dans un premier temps, essaye de charger et afficher chaque variable, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    val_ip = getappdata(gcbf,'val_IP')
    val_p = getappdata(gcbf,'val_P')
    val_ct = getappdata(gcbf,'val_CT')
     
    val_tot3= val_ip + val_p + ct;
    ...
    Ca te permettra de voir à partir de quel moment le problème survient et éventuellement d'où il provient (de quelle variable)
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    ben c'est déjà fait, toutes mes variables sont affichées,
    et meme val-tot, val_tot2, val_tot3 sont bien affichées
    j'ai aucun soucis la dessus,
    mais c'est qd je veux additionner la somme totale de ses variables je n'arrive plus,
    ces variables sont reparties dans 3 fichiers .m différents , val_ScT est la valeur totale que je n'arrive pas l'avoir, elle me marque vide val_ScT=[]
    j'ai remarqué qd j'ecrit cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function  result_Callback(hObject, eventdata, handles)
    val_ScT= getappdata(gcbf,'val_tot')+
    getappdata(gcbf,'val_tot2')+getappdata(gcbf,'val_tot3');
      setappdata(gcbf,'val_ScT',val_ScT)
    ma variable val_ScT ne s'affiche plus dans la command window, je vois tjrs les variables val_tot, val_tot2, val_tot3

    merci pr ton aide

  10. #10
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    C'est normal que val_ScT ne s'affiche pas car tu as mis un ';' à la fin de la ligne.

    Essaye d'utiliser ISAPPDATA sur chaque variable pour vérifier si elle existent dans le workspace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    disp(isappdata(gcbf,'val_tot'));
    disp(isappdata(gcbf,'val_tot2'));
    disp(isappdata(gcbf,'val_tot3'));
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    disp(isappdata(gcbf,'val_tot'));
    disp(isappdata(gcbf,'val_tot2'));
    disp(isappdata(gcbf,'val_tot3'));
    pour chacune des variables val_tot, val_tot2, val_tot3 m'a donné sa valeur exacte et 1 je suppose pour me dire qu'elle dispo

    j'ai une petite question: je suis allé ds le workspace, je ne vois pas mes variables?? est ce que c'est normal??

  12. #12
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Oui c'est normal que tu ne vois pas tes variables dans le workspace

    Là je comprends pas, si toutes tes variables te donne une valeur, leur somme doit bien te donner une valeur, ou alors il y a quelquechose que j'ai pas saisi...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Oui toutes mes variables sont bien affichées avec leurs valeurs exactes ,
    j'arrive à faire la somme de 3 variables val_Tot, val_tot2, val_tot3; elles sont bien affichées avec leurs valeurs exactes....
    ce qui coince juste la variable val_ScT qui est la somme des précédentes, elle s'affiche vide... et je n'ai plus d'idée pour trouver le problème

    merci

  14. #14
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Là je comprends pas

    val_ScT est la somme des variables précédente, cette somme n'est pas vide, comment val_ScT peut être vide?
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    oui voila, val_ScT=[] c'est ce qui me donne pourtant t'as vu mon code avant, j'ai toutes les valeurs des autres variables juste je n'ai pas la valeur de val_ScT, j'arrive plus a comprendre c'est quoi le problème...

Discussions similaires

  1. Comment écrire une très longue variable dans un fichier ?
    Par hijodelanoche dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2005, 16h12
  2. Réponses: 5
    Dernier message: 21/10/2005, 11h48
  3. modifier une variable dans un fichier
    Par Guismay dans le forum Langage
    Réponses: 7
    Dernier message: 11/09/2005, 19h46
  4. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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