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 :

Interface graphique MATLAB et la fonction XLSREAD


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Interface graphique MATLAB et la fonction XLSREAD
    Bonjour,

    j'ai un problème dans matlab avec une interface graphique et la fonction xlsread :
    j'ai développé une interface graphique qui permet de lire et de tracer les fichiers Excel sous matlab,

    voila le programme :

    Le button Select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Select_button_Callback(hObject, eventdata, handles)
    global A f;                      % A: matrice de fichier Excel, f : la page de classeur
    file_Name = uigetfile('*.xls');   % pour choisir les fichiers Excel
    A=xlsread(file_Name,f);
    set(handles.editfileName,'string',file_Name)
    guidata(hObject,handles)
    Edit text : pour entrer la page du fichier Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function f_Callback(hObject, eventdata, handles)
    h=findobj(gcf,'Tag','f');
    f=str2double(get(h,'string'));
    Le button Process : pour tracer la fonction plot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function pushbutton3_Callback(hObject, eventdata, handles)
     
    figure(2);
    global A;
    plot(A(:,1),A(:,6))
     
    %%%%%%%%%%%%%%%%
    voir le fichier ci-joint (la figure de l'interface graphique)

    mais à la fin j'ai toujours le même problème (la fonction xlsread elle considère la variable f comme caractère 'string' et si je change f par un nombre entier, par exemple 28 ou 3 la fonction xlsreal ça marche bien, mais moi je veux changer à partir de l'extérieur c'est à dire à partir de l'interface graphique.

    message d'erreur de 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
    Error using ==> xlsread at 130
    Sheet argument must be a string or an integer.
     
    Error in ==> prog_updata_excel>Select_button_Callback at 91
    A=xlsread(file_Name,f);
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> prog_updata_excel at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)prog_updata_excel('Select_button_Callback',hObject,eventdata,guidata(hObject))
     
     
    ??? Error while evaluating uicontrol Callback
    je bloque depuis 4 jours. SVP j'ai besoin de votre aide. Merci
    Images attachées Images attachées  

  2. #2
    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,

    Pourquoi utilises-tu STR2DOUBLE ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f=str2double(get(h,'string'));
    Je pense que ca marcherait mieux sans...

    Duf
    Simulink & Embedded Coder

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

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut interface graphique GUI matlab
    Bonjour, merci pour votre réponse mais :

    Je utilise cette fonction pour transformé la destructeur 'string' en réel 'double'.

    si vous avez des aider ? explique moi SVP

    Cordialement.

  4. #4
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Moi j'ai l'impression que tu ne mets pas au bon endroit ta commande xlsread
    Parce que la valeur f à mon avis elle ne vaut rien une fois que tu as sélectionné ta feuille via le uigetfile . A tous les coups elle doit valoir NaN (au lieu d’être une chaine de caractère ou un entier) et c'est ce qui cause ton message d'erreur:
    Error using ==> xlsread at 130
    Sheet argument must be a string or an integer.
    Pour le vérifier tapes:
    lance ton code pour reproduire ton erreur .MATLAB va mettre un point d’arrêt à la ligne 91 de ton callback Select_button_Callback

    et ensuite tapes
    tu verras bien ainsi ce que vaut f et ça expliqueras l'origine de ton message d'erreur.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut interface graphique GUI matlab
    Bonjour,

    mais f si juste pour sélectionner la page Excel. par exemple si je change f par un
    number intéger (2, 5, ou 28) ça marche trés bien. et mois je veux sélectionner la page à partir de f (l'exterieur)

    A+

  6. #6
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    T'inquiète j'ai bien compris ton problème mais toi par contre tu ne sembles pas avoir testé ma solution .
    C'est sur que si tu hard codes f avec le format qu'il faut ça va marcher mais je maintiens que tu devrais faire ce que je te dis pour voir ce que f vaut justement .
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

Discussions similaires

  1. Interface graphique matlab
    Par sifouasma dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/04/2014, 10h38
  2. Actualiser une interface graphique MATLAB
    Par imade1990 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 06/12/2012, 16h18
  3. Réponses: 0
    Dernier message: 15/06/2010, 16h36
  4. Passage de paramètres entre une fonction et une interface graphique
    Par ninja_3 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 29/05/2007, 11h37

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