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

Interfaces Graphiques Discussion :

Charger des données et tracer une courbe en fonction de ces données [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut Charger des données et tracer une courbe en fonction de ces données
    Bonjour,

    J'ai 2 soucis dans mon code actuellement.
    -Le 1er vient du chargement du fichier dans l'interface.
    J'ai ce 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
     
    function test(htab,evdt,hpanel,hstatus)
    handles = guidata(gcf);
    uicontrol(...
        'Parent',testpanel(1),...
        'style','pushbutton',...
        'units','normalized',...
        'position',[0.05 0.9 0.1 0.05],...
        'string','Charger data',...
        'callback',@chgt_data)
    guidata(gcf,handles);
     
    function chgt_data(obj,evnt)
    handles = guidata(gcbf);
    [nom,rep] = uigetfile('*.xls*;*.txt*');
     
    guidata(gcbf,handles)
    Jusque là tout fonctionne, j'ai bien une fenêtre qui s'ouvre en me demandant de selectionner le fichier (Excel ou Txt) que je veux.
    Une fois le fichier selectionné, rien ne m'indique qu'il a été correctement chargé et que je vais pouvoir utilisé les valeurs présentes dans ce fichier.

    -Le 2e problème vient du tracé de courbes.
    Dans mon interface GUI j'ai un pushbutton classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    uicontrol(...
        'Parent',testpanel(1),...
        'units','normalized',...
        'style','pushbutton',...
        'String','Trace',...
        'position',[0.3,0.05,0.15,0.05],...
        'callback','line(d1,Y)');
    J'utilise line car j'ai besoin d'avoir 2courbes sur le même graphe (pour faire une comparaison de courbes). d1 et Y sont des valeurs présentes dans le tableau que j'ai chargé précédemment.
    Je n'arrive à tracer les courbes uniquement si j'ai runner le programme qui comporte ces datas.

    En clair, j'aimerais que tout se fasse dans l'interface GUI.

    Merci d'avance

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

    Pour ton premier problème, une simple comparaison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if nom==0
        % pas de fichier chargé
    else
        % ok
    end
    Ensuite, prends l'habitude d'utiliser des fonctions pour les callback comme tu l'as fait pour chgt_data au lieu chaines de caractères comme

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Pour le 1er problème, j'avais mis cette condition, j'ai juste oublier de la mettre dans le code, en fait j'aimerais que quelque chose indique à l'utilisateur que le fichier à correctement été chargé, et que les données de ce fichier apparaissent à un endroit dans l'interface.
    Est ce possible ?

    Pour le second problème, j'ai essayer de créer une fonction "tracer_courbe", plus rien n'apparaissait sur mes graphes, même en simulant l'autre fichier

  4. #4
    Invité
    Invité(e)
    Par défaut
    1. Il te suffit d'utiliser un objet de type text uicontrol('style','text',...)
    2. Peux-tu nous montrer le code correspondant?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    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 trace_graphe(obj,evnt)
    handles = guidata(gcf);
     
    handles.page1_axe=axes(...
        'Parent',page1panel(1),...
        'units','normalized',...
        'position',[0.53, 0.15, 0.44 ,0.5]);
     
    subplot(2,2,1:2)
    plot(d1,Y,'r');
    grid;
    xlabel('distance (m)');
    ylabel('hauteur(m)');
     
    subplot(2,2,3)
    plot(d1,R,'b');
    grid;
    xlabel('distance (m)');
    ylabel('rayon(m)');     
     
     guidata(gcf,handles)
    Page 1 est la page sur laquelle le graphe doit s'afficher

  6. #6
    Invité
    Invité(e)
    Par défaut
    Alors plusieurs remarques:
    • Dans les Callback, c'est handles = guidata(gcbf); et guidata(gcbf,handles)
    • Ensuite, je doute que de créer un objet axes dans un callback soit une bonne idée, il vaut mieux le créer au tout début avec le reste des objets graphiques.
    • Enfin tu crées 2 subplot, or chaque subplot est un objet axes. Donc il te faudra créer deux axes pour faire cela.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    J'ai bien effectué ma fonction "Charger données", j'arrive jusqu'au moment où l'on charge le fichier voulu. Mais rien ne m'indique que le fichier a été correctement chargé et que les données pourront être utilisées dans l'interface.

    Un autre moyen possible, mais je n'ai aucune idée pour réaliser cela, serait d'importer un fichier .m (ça c'est ok), et d’exécuter celui ci via l'interface GUI.

  8. #8
    Invité
    Invité(e)
    Par défaut
    De quelles vérifications parles-tu exactement? Mon premier message vérifie si on a cliqué sur le bouton annuler ou pas.

    Pour exécuter un fichier .m: doc run

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    En fait j'ai tout un autre programme de simulation (fichier X)qui n'est pas inclus dans le programme de mon interface.
    J'aimerais "runner" ce fichier X avec un pushbutton comme ci dessous.
    Là, j'arrive à sélectionner mon fichier .xls ou .txt et après c'est tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function chgt_data(obj,evnt)
    handles = guidata(gcbf);
    [nom,rep] = uigetfile('*.xls*;*.txt*');
     run 'dataspa.xls';
    if nom==0
       return 
    else
     
    end
     
    guidata(gcbf,handles)
    En fait, j'aimerais que mon fichier X soit executer dans mon interface. De cette façon, je pourrais récuperer les variables qui m'interessent pour faire mes calculs.
    Je sais pas si c'est très clair...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Tu veux "runner" des fichiers .xls et .txt et récupérer des variables?
    Non ce n'est pas du tout clair

    [EDIT ]Je pense pour Excel que tu peux te servir de ce bout de code.
    Tu peux aussi regarder system
    Dernière modification par Invité ; 31/05/2011 à 14h22.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Dans mes fichiers .xls, j'ai plusieurs colonnes de variables.
    (1 colonne température, 1 colonne pression, 1 colonne volume...par exemple).

    J'aimerais (via le pushbutton charger data) charger le fichier que l'utilisateur souhaite et ensuite travailler sur ce fichier.

    Dans la suite de mon programme, j'ai une fonction "simulation" dans laquelle j'utilise les valeurs des colonnes.

    J'aimerais donc, que suivant le fichier choisi, le nom des différentes variables s'adapte à mes calculs

    (A savoir, le nom des colonnes est le même dans tout les fichiers, et disposé de la même façon.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Data = xlsread('Lyon.xls')
     
    % --------------------------------------------------------------------------
    % ------------------Création des différentes matrices-----------------------
    % ------------------------------------------------------------------------
    %Vérifier dans le tableau Excel que les données sont sous format nombre!!
     
    P=Data(:,1); %1ere colonne du fichier excel
    T=Data(:,2); %2e colonne...
    V=Data(:,3);
    H=Data(:,4);
     
    [n,m]=size(Data);
    ...
    Actuellement je ne peux donc travailler que sur mon fichier "Lyon". Si je charge le fichier "Paris", ça ne fonctionne pas

    Merci

  12. #12
    Invité
    Invité(e)
    Par défaut
    Et donc où est le problème?
    As-tu regardé cette entrée de la FAQ ?
    Dernière modification par Invité ; 01/06/2011 à 15h50.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Et donc où est le problème?
    As-tu regardé cette entrée de la :FAQ: ?
    C'est pour l'autre sujet la FAQ ? pour le chemin du fichier ?
    Le chemin ne sera jamais le même car le programme ira sur différents pc.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nilsmatlab Voir le message
    Le chemin ne sera jamais le même car le programme ira sur différents pc.
    D'ou ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [nom,rep] = uigetfile('*.xls*;*.txt*');
    Non? Sinon je n'ai rien compris à ta logique.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Oui c'est pour cela que j'ai mis cette partie de code. De cette façon l'utilisateur peut aller chercher le fichier qu'il souhaite.

    Je suis un peu perdu

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nilsmatlab Voir le message
    Je suis un peu perdu
    Et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [nom,rep] = uigetfile('*.xls*;*.txt*');
    % Si fichier Excel:
    Data = xlsread(fullfile(rep,nom));

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Merci, je vais essayer d'adapter

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

Discussions similaires

  1. Tracer une courbe en fonction des valeurs dans un fichier
    Par Yann_69 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/04/2012, 09h03
  2. [XL-2010] Exporter des donnes automatiquement et tracer une courbe
    Par skrobar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/04/2012, 16h26
  3. Réponses: 4
    Dernier message: 20/05/2011, 16h01
  4. Tracer une courbe en fonction du clavier
    Par ramdamriddim dans le forum Général Java
    Réponses: 0
    Dernier message: 10/10/2009, 00h13
  5. Réponses: 7
    Dernier message: 01/04/2007, 12h30

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