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 :

afficher une matrice contenue dans un fichier .m dans un uitable [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut afficher une matrice contenue dans un fichier .m dans un uitable
    Bonjour a tous!

    Voila j'ai créé une interface graphique avec guide et le but de l'interface est d'ouvrir un fichier, ensuite on le met dans un listbox, on ouvre un 2e fichier on fait une comparaison et on affiche le résultat dans un uitable. Pour l'instant je veux juste ouvrir le fichier le placer dans une listbox et afficher se qu'il contient dans le uitable. Mais le problème c'est qu'il m'affiche dans le uitable que le nom du fichier et pas se qu'il contient.

    voici le code entier de l'interface:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    function varargout = interfacegraph(varargin)
    % INTERFACEGRAPH MATLAB code for interfacegraph.fig
    %      INTERFACEGRAPH, by itself, creates a new INTERFACEGRAPH or raises the existing
    %      singleton*.
    %
    %      H = INTERFACEGRAPH returns the handle to a new INTERFACEGRAPH or the handle to
    %      the existing singleton*.
    %
    %      INTERFACEGRAPH('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in INTERFACEGRAPH.M with the given input arguments.
    %
    %      INTERFACEGRAPH('Property','Value',...) creates a new INTERFACEGRAPH or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before interfacegraph_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to interfacegraph_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help interfacegraph
     
    % Last Modified by GUIDE v2.5 03-May-2013 10:11:22
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @interfacegraph_OpeningFcn, ...
                       'gui_OutputFcn',  @interfacegraph_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before interfacegraph is made visible.
    function interfacegraph_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to interfacegraph (see VARARGIN)
     
    % Choose default command line output for interfacegraph
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes interfacegraph wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = interfacegraph_OutputFcn(hObject, eventdata, handles) 
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Get default command line output from handles structure
    varargout{1} = handles.output;
     
     
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    g =cellstr( get(handles.listbox1,'string'));
    handles.g_Value=g;
    set(handles.uitable1,'Data',g,'ColumnName',{'temps1','TIC','masse'});
     
    % --- Executes on selection change in listbox1.
    function listbox1_Callback(hObject, eventdata, handles)
    % hObject    handle to listbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Hints: contents = cellstr(get(hObject,'String')) returns listbox1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from listbox1
    %str = cellstr(get(hObject,'string'));
    %set(handles.listbox1,'string',str);
     
     
    % --- Executes during object creation, after setting all properties.
    function listbox1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to listbox1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: listbox controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
     
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    [filename,pathname] = uigetfile({'*.m';},'File Selector','MultiSelect', 'on');
     
    if isequal(filename,0) 
    disp('User selected Cancel');
    else     
    set(handles.listbox1,'String',filename) ;
     
    end 
     
     
     
    % --- Executes when entered data in editable cell(s) in uitable1.
    function uitable1_CellEditCallback(hObject, eventdata, handles)
    % hObject    handle to uitable1 (see GCBO)
    % eventdata  structure with the following fields (see UITABLE)
    %	Indices: row and column indices of the cell(s) edited
    %	PreviousData: previous data for the cell(s) edited
    %	EditData: string(s) entered by the user
    %	NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
    %	Error: error string when failed to convert EditData to appropriate value for Data
    % handles    structure with handles and user data (see GUIDATA)
    Donc si vous pouvez m'aider se serai sympa.

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

    Citation Envoyé par Latimer Voir le message
    Mais le problème c'est qu'il m'affiche dans le uitable que le nom du fichier et pas se qu'il contient.
    Ceci est tout à fait normal, la fonction uigetfile ne fait que retourner le nom et chemin des fichiers sélectionnés.
    Tu dois par la suite effectuer leur lecture avec les fonctions présentées dans la FAQ.

    Note : dans le cas d'un changement de dossier il est plus prudent d'utiliser la sortie pathname :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [filename,pathname] = uigetfile({'*.m';},'File Selector','MultiSelect', 'on');
    cheminEntier = fullfile(pathname, filename);

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    c'est bon j'ai réussi à afficher dans le uitable mais j'ai un nouveau problème. En faite j'ai utilisé une des 3 méthode pour les interface graphique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [handles.filename,handles.pathname] = uigetfile({'*.m';},'File Selector','MultiSelect', 'on');
    guidata(gcbf, handles);
    Et donc j'ai lu le fichier à l'aide de la fonction fopen et fread mais il ne m'affiche pas du tout la matrice que contient le fichier, il m'affiche dans le uitable une série de valeur que je ne connais pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fid=fopen(handles.filename,'r');
    A=fread(fid,'float');
    Quelqu'un pourrai m'éclairer. La matrice dans le fichier contient 3 colonne avec 212 valeurs dans chacune des colonnes. Et la fonction load ne fonctionne pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    fread sert à la lecture de fichiers binaires, ce qui n'est pas le cas selon ta description, ce serait plutôt fscanf ou textscan à utiliser dans ton cas.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Ok c'est bon j'ai utilisé fileread et sa le lis très bien. Mais j'ai un problème d'affichage c'est à dire qu'il m'affiche tout le fichier dans une cellule du uitable alors que comme j'ai 3 colonnes dans la matrice et je veux afficher une colonne de la matrice dans la colonne du uitable.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Cette fonction lit bien ton fichier, mais...
    Citation Envoyé par doc fileread
    Read contents of file into string
    tu te retrouves donc avec tous les caractères de ton fichier dans un unique vecteur ligne de type char.
    Et si tu essayais l'une des fonctions que je t'ai proposé ?

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Ok, donc j'ai utilisé textscan et fscanf. Mais il ne m'affiche plus rien dans le uitable, j'ai un uitable vide voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid=fopen(handles.filename,'r');
    c=textscan(fid,'%d');
    set(handles.uitable1,'Data',c,'ColumnName',{'temps1','TIC','masse'});

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu as trois colonnes, donc déjà : '%d %d %d', puis pour te faciliter la vie, tu peut fixer le paramètre 'CollectOutput' à true.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c=textscan(fid,'%d %d %d', 'CollectOutput', true);
    
    set(uitable,'Data',c{1},'ColumnName',{'temps1','TIC','masse'});
    Sans oublier fclose(fid); à la fin

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Merci beaucoup, mais maintenant dans le uitable j'ai que les titres des colonnes et j'ai même plus les cellules du uitable.

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Bonjour désolé pour le double post mais je voulais relancer le sujet car c'est important.

    Voila j'ai fait se que l'on ma dit mais maintenant dans le uitable je n'ai que les intitulés des colonnes et rien dedans, donc es que quelqu'un aurai une idée car je n'ai rien trouvé.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Donner le contenu de c retourné ainsi que celui du fichier pourrai s'avérer utile

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Le contenue du fichier est une matrice qui contient 3 colonnes avec pour chacune 212 valeurs (que des chiffres avec plein de chiffres après la virgule). Donc dans le uitable je dois avoir 3 colonnes pour chacune on dois avoir les 212 valeurs. Voila se que je cherche et avec le code que tu m'a donné je n'ai que les Titres de chacune des colonne et rien en dessous. C'est ce que tu demandais ? Car j'ai pas trop compris le début de ta phrase désolé.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Latimer Voir le message
    (que des chiffres avec plein de chiffres après la virgule).
    Alors je te conseille de revoir la documentation de la fonction textscan
    et particulièrement l'argument formatSpec

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    J'ai regardé la documentation sur l'argument formatspec j'ai essayé avec l'argument '% F % F % F' le aussi avec N mais il me met:
    Error using textscan
    Badly formed format string

    Voici comment est organisé la matrice:

    h=[0.110349998 76854184 129.583618
    0.36985001 82153552 129.583618
    0.629350007 81261968 161.494049 et ainsi de suite.

    Sinon j'ai toujours rien dans le uitable lorsque je veux afficher la matrice.

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Salut à tous

    Encore désolé pour le double post mais je voulais relancer le sujet.

    C'est bon j'ai trouvé un moyen j'ai enlevé la matrice du fichier et j'ai laissé les valeurs.

    J'ai un nouveau problème comment je peux ouvrir deux fichiers avec mon interface de façon à ce que je puisse utiliser les valeurs qu'ils contiennent pour coller mon programme à mon interface. En faite je veux ouvrir deux fichiers prendre les valeurs de l'un et les valeurs de l'autre et ensuite appliquer les fonctions que j'ai écrite pour traiter les données des deux fichiers. Pour l'instant j'ai juste le code pour ouvrir 1 fichier.

    Svp aidez moi c'est important.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Si tu as le code pour un fichier, qu'est-ce qui t'empêche de le recopier pour l'autre fichier ?

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Je sais pas j'ai essayé de faire deux fopen mais sa marche pas. voici le code pour l'ouverture d'un fichier et son affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    fid=fopen(handles.filename,'r');
     
    c=textscan(fid,'%s %s %s');
     
    set(handles.uitable1,'Data',c{1},'ColumnName',{'temps1','TIC','masse'});
     
    fclose(fid);
    ensuite le code pour chercher le fichier (je passe d'abords par une listbox pour stocker les fichiers que je veux ouvrir pour l'instant je peux en ouvrir que 1):

    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
     
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    [handles.filename,handles.pathname] = uigetfile({'*.m';},'File Selector','MultiSelect', 'on');
    guidata(gcbf, handles);
    if isequal(handles.filename,0) 
    disp('User selected Cancel');
    else 
     
    set(handles.listbox1,'String',handles.filename) ;
     
    end

  18. #18
    Invité
    Invité(e)
    Par défaut
    mais ça marche pas
    Je commence à faire une surdose de cette expression qui ne veut absolument RIEN DIRE !

    Sinon un peu de lecture

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Merci!! ça fonctionne je m'étais compliqué la vie en passant par d'autres variables. Je met le code si jamais quelqu'un a le même problème que moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fid=fopen(handles.filename{1},'r');
    fid2=fopen(handles.filename{2},'r');
    c=textscan(fid,'%s %s %s');
    d=textscan(fid2,'%s %s %s');
    set(handles.uitable1,'Data',d{1},'ColumnName',{'temps1','TIC','masse'});
    J'aurai une petite question une fois que j'aurai collé mon programme j'aurai plusieurs matrices différentes comment je peux faire pour les afficher dans le uitable avec cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.uitable1,'Data',d{1},'ColumnName',{'temps1','TIC','masse'});

  20. #20
    Invité
    Invité(e)
    Par défaut
    Une simple concaténation verticale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.uitable1,'Data',[c{1} ; d{1}], 'ColumnName',{'temps1','TIC','masse'});
    '%s' représente une chaîne de caractères... je croyais que c'était des valeurs numériques ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. recuperer le contenu d'un fichier bitmap dans une matrice
    Par info help dans le forum Débuter
    Réponses: 24
    Dernier message: 26/05/2012, 14h58
  2. Afficher le contenu d'un fichier TEXT dans une edit
    Par darkman13130 dans le forum C++Builder
    Réponses: 1
    Dernier message: 06/06/2008, 16h41
  3. copie le contenu d'un fichier xls dans un fichier txt
    Par mariafan dans le forum Langage
    Réponses: 22
    Dernier message: 09/08/2007, 14h07
  4. Réponses: 4
    Dernier message: 11/07/2007, 18h40
  5. [Zip] Afficher une image contenue dans un fichier zip
    Par Mister Nono dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/03/2007, 08h59

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