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 :

probleme load matlab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut probleme load matlab
    Dans le script de mon GUI, j'ai une fonction pour sauvegarder la valeur entrée dans ma case (de type edit text),donc je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     numerosession = get(hobject,'string');
    Pour ça il n'y a pas de problème, par contre ce que je veux faire, après avoir fait un load de cette valeur dans une autre fonction, c'est effectuer une comparaison,dans le sens où si l'utilisateur n'entre rien dans la case numerosession, ça doit afficher un message d'erreur (par exemple : "vous devez entrer une valeur valide"), mais j'ai essayé differentes comparaisons sans resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     load numerosession;
    if numerosession==-1 % ne fonctionne pas
    if numerosession==0 % pareil
    Dans mon cas, j'ai mis la valeur par défaut à partir du GUIDE Matlab (string=0), ca affiche le 0 dans le GUI, mais la valeur de numerosession reste inexistante.

    Donc quelle sorte de comparaison dois-je effectuer pour savoir si l'usager a entré ou non une valeur dans numerosession, et comment mettre cette valeur par défaut à 0 si l'utilisateur n'a rien entré dans cette case.

    merci a tous!!

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut
    on pourrait voir un petit bout de code?

    les valeurs par defaut tu peux les programmer quand tu fait ton interface, sous guide, tu rentres la valeur a afficher, sinon a l'ouverture de ton interface, fait un set de cette valeur pour etre sur qu'elle soit bien initialisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.mon_edit,'String',0);
    ensuite pour tester si l'utilisateur a bien mis une valeur et bien tu peux utiliser isempty, sinon il doit y avoir un truc special du genre isnum, et verifier que la valeur n'est pas la valeur par defaut 0.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Par défaut
    Hello,

    Je crois que la fonction 'isempty' marche bien pour la comparaison dans le GUI...

    Par exemple, moi il compare la valeur entree et si elle est au dessus de ma limite fixee alors il retourne l ancienne valeur mais pour toi ce peut etre un message d erreur...

    Voila mon code pour l edit text...:
    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
     
    function editFrequence_Callback(hObject, eventdata, handles)
    % hObject    handle to editFrequence (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Get the new value for the Frequency.
    NewStrVal = get(hObject, 'String');
    NewVal = str2double(NewStrVal);
    % Check that the entered value falls within the allowable range.
    if  isempty(NewVal) || (NewVal< 0) || (NewVal>50000),
       % Revert to last value, as indicated by the Slider.
       OldVal = get(handles.sliderFrequence,'Value');
       set(hObject, 'String',OldVal)
    else % Use new frequency value
       % Set the value of the Slider to the new value.
       set(handles.sliderFrequence,'Value',NewVal)
       % Set the Frequency parameter of the Sine Wave Block 
       % to the new value.
       set_param('StageVrai2/Sine Wave','Frequency',NewStrVal)
    end

  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
    Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    numerosession = get(hobject,'string');
    Tu récupères une ... string. Ben oui !
    Tu t'en serais rendu compte facilement en visualisant sa valeur.

    Il faut donc transformer numerosession en nombre.
    Pour cela :

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut
    Dans ce cas, mais si j'ai entré les bonnes lignes dans les fonctions des edit text:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function edit6_Callback(hObject, eventdata, handles)
    NblocEssai=str2double(get(hObject,'String'));
    save NblocEssai;
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function edit5_Callback(hObject, eventdata, handles)
    NumeroSession=str2double(get(hObject,'String'));
    save NumeroSession;
    On dirait que ça ne passe pas par ces fonctions la quand j'appelle une autre fonction pushbuton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function pushbutton14_Callback(hObject, eventdata, handles)
    handles.edit5
    handles.edit6
    run('conversion');
    Parce que ça m'affiche des valeurs bizzares quand j'ai ajouté les deux lignes (handles.edit5 et 6):
    ans =2.001708984375000e+000
    ans =1.000170898437500e+001
    Au fait c'est supposé me donner 0 pour les deux car j'ai mis à partir du GUIDE que la valeur par défaut est 0 (dans la propriété string) comme vous le voyez sur le capture d'écran.

    Au fait tant que je n'écris rien dans les espaces de edit text, on dirait que ça ne passe pas par sa fonction (mais moi je veux justement leur donner une valeur par défaut quand je n'écris rien). Où je me dis que je ne fais pas la bonne manipulation pour appeler la valeur prise, dans mon cas, je fais juste un save de la valeur, et un load plus tard (est-ce que je dois faire l'appel sous la forme handles.edit3 dans une autre fonction ?)
    Images attachées Images attachées  

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 47
    Par défaut
    Voila,merci de m'avoir mis sur la bonne piste,le problème est résolu,donc je mets ce que j'ai compris pour aider ceux qui pourraient avoir le même problème que moi à l'avenir:
    Pour mettre les valeurs de mes edits a 0 par defaut j'ai ajoutés 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function MenuConversion_OpeningFcn(hObject, eventdata, handles, varargin)
    handles.output = hObject;
     
    handles.edit6=0;%pour chacun de mes edits comme valeur par défaut
    handles.edit5=0;
     
    % Update handles structure
    guidata(hObject, handles); %sauvegarde les valeurs dans mes handles
    Ensuite dans mes fonctions d'edit j'ai ecris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function edit6_Callback(hObject, eventdata, handles)
    NblocEssai=str2double(get(hObject,'String'));
    handles.edit6=NblocEssai; %permet de modifier la valeur de edit6 ds handles
    guidata(hObject, handles); %sauvegarde mes changement
    Alors si je n'écris rien dans la fenêtre du edit, le programme ne passera meme pas par la fonction function edit6_Callback , et gardera la valeur par défaut spécifiée ci-dessus,sinon handles.edit prendra la nouvelle valeur ajoutée.
    Donc je peux accéder à cette valeur n'importe où dans le gui avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     handles.editX % où X est le numero du edit qui m'interresse
    Encore une fois merci a tous.

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

Discussions similaires

  1. Probleme licence Matlab 6.5 sur Vista
    Par MBAYE BABACAR GUEYE dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/11/2007, 18h23
  2. Probleme load avec XSLoader.pm
    Par lolotte630 dans le forum Modules
    Réponses: 0
    Dernier message: 27/10/2007, 10h38
  3. Problem loading VE
    Par dhafer dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/02/2007, 11h42
  4. Probleme : load une animation sur une autre
    Par Basicman dans le forum Intégration
    Réponses: 2
    Dernier message: 26/04/2006, 15h14
  5. Réponses: 8
    Dernier message: 13/02/2006, 16h57

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