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 :

deux fichiers :l'un est créé par matlab, l'autre vient du GUIDE


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 110
    Par défaut deux fichiers :l'un est créé par matlab, l'autre vient du GUIDE
    Bonjour a tous,
    J'ai deux fichiers : essai20.m (qui fonctionne parfaitement), et un fichier essai.m qui vient de la création d'une interface graphique (essai.fig) avec des boutons et des graphes. Le problème c'est de permettre au fichier essai.m de lire les variables qui se trouvent dans essai20.m pour qu'il puisse les afficher sans être obligé de faire une fusion des deux fichier essai.m et essai20.m. Normalement cela devrait se faire sans trop de problèmes, mais je commence avec les interfaces graphiques et j'avoue que les commentaires ne sont pas tres élocquants. Je suis un peu perdu dans les callback et autres commandes.

    Merci a ceux qui veulent aider un débutant. Je peux fournir les deux fichiers si besoin est.

  2. #2
    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
    Et oui GUIDE qui devrait être une aide est plutôt un embrouillateur

    Mais bon on va essayer de faire avec.

    Ce qui est important en 1er lieu c'est ton fichier essai20.m :
    - est-ce un script ou une fonction ?
    - si c'est une fonction : as-tu moyen de mettre en sorties toutes les variables dont tu penses avoir besoin ? Le mieux étant de n'avoir qu'une seule sortie sous forme de structure dont les champs seraient les noms de tes variables.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 110
    Par défaut Petites précisions pour caro-line et les autres qui veulent.
    Bonjour,
    J'ai un fichier essai20.m qui commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function [frequency,D,R,T,labels,links,tracks] = tdfReadData3D (filename)
    , qui lit des données dans un fichier et me les affiche sous forme de graphes avec différentes variables : x,y,xi,yi,etc....Je ne sais pas si ce sont des variables de sortie, ou si je dois faire quelque chose pour qu'elles le deviennent.
    Dans le fichier essai.m, qui vient du guide par création de l'interface graphique, je retrouve bien tout ce que j'ai créé. Et même qu'il affiche cela correctement. Mais je suis incapable de faire passer les variables de essai20.m dans essai.m. Puis je mettre les deux programmes en doc attaché ???

    PS: Je ne sais pas si c'est le bon procédé pour refaire une question. Merci de me lire !!!!!!

  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
    Tout cela n'est pas forcément très clair.
    Quelles sont les variables dont tu as besoin ?
    Comment appelles-tu le fichier essai20. dans essai.m ?

    Car a priori tu dois au moins pouvoir récupérer les variables de sortie de ta fonction essai20 qui sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [frequency,D,R,T,labels,links,tracks]
    Tu peux mettre ton code directement entre balises dans ton prochain message, ce sera mieux qu'en fichier attaché.
    En séparant les deux.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 110
    Par défaut Merci de m'aider je suis néophyte dans le domaine
    rebonjour
    j'ai mes deux fichiers, mais je suis incapable de faire le tri entre les variables de l'un et de l'autre. Je vais vous mettre le code épuré des commentaires pour ne pas trop charger la mule.
    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
    function [frequency,D,R,T,labels,links,tracks] = tdfReadData3D (filename)
     
    frequency=[]; D=[]; R=[]; T=[]; labels=[]; links=[]; tracks=[];
     
    [fid,tdfBlockEntries] = tdfFileOpen (filename);   % open the file
    if fid == -1
       return
    end
     
    tdfData3DBlockId = 5;
    blockIdx = 0;
    for e = 1 : length (tdfBlockEntries)
       if (tdfData3DBlockId == tdfBlockEntries(e).Type) & (0 ~= tdfBlockEntries(e).Format)
          blockIdx = e;
          break
       end
    end
    if blockIdx == 0
       disp ('Data 3D not found in the file specified.')
       tdfFileClose (fid);
       return
    end
     
    if (-1 == fseek (fid,tdfBlockEntries(blockIdx).Offset,'bof'))
       disp ('Error: the file specified is corrupted.')
       tdfFileClose (fid);
       return
    end
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % read header information
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    nFrames   = fread (fid,1,'int32');
    frequency = fread (fid,1,'int32');
    startTime = fread (fid,1,'float32');
    nTracks   = fread (fid,1,'int32');
    D         = fread (fid,3,'float32');
    R         = (fread (fid,[3,3],'float32'))';
    T         = fread (fid,3,'float32');
    fseek (fid,4,'cof'); %skip Flags field
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % read links information
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    if (1 == tdfBlockEntries(blockIdx).Format) | (3 == tdfBlockEntries(blockIdx).Format)        % with links
       nLinks = fread (fid,1,'int32');
       fseek (fid,4,'cof');
       links  = fread (fid,[2,nLinks],'int32');
    end
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % read tracks information
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    labels = char (zeros (nTracks,256));
    tracks = NaN * ones (nFrames,3*nTracks);
     
    if (1 == tdfBlockEntries(blockIdx).Format) | (2 == tdfBlockEntries(blockIdx).Format)         % by track
       for trk=1:nTracks
          label      = strtok (char ((fread (fid,256,'uchar'))'), char (0));
          labels (trk,1:length (label)) = label;
          nSegments  = fread (fid,1,'int32');
          fseek (fid,4,'cof');
          segments   = fread (fid,[2,nSegments],'int32');
          for s = 1 : nSegments
             for f = segments(1,s)+1 : (segments(1,s)+segments(2,s))
                tracks(f,3*(trk-1)+1:3*(trk-1)+3) = (fread (fid,3,'float32'))';
             end
          end
       end
    elseif (3 == tdfBlockEntries(blockIdx).Format) | (4 == tdfBlockEntries(blockIdx).Format)     % by frame
       for trk=1:nTracks
          label      = strtok (char ((fread (fid,256,'uchar'))'), char (0));
          labels (trk,1:length (label)) = label;
       end
       tracks = (fread (fid,[3*nTracks,nFrames],'float32'))';
    end
    save F:\Donnetracks.txt tracks -ascii;% sauvegarde les données lues sous un format texte;
    %load F:\Donnetracks.txt;
    i=size(tracks)% donne les dimensions du tableau de données;
    j=i(1,1)%Nombre de lignes du tableau de données;
    k=i(1,2)%nombre de colones du tableau de données;
    figure(1)%ouvre une fenêtre pour faire le graphe;
    plot(tracks);% donne touts les graphes qui sont dans le fichier de données colonne par colonne sur la même figure;
    title('tout les graphes venant des données colone par colone');% Donne l'intitulé du graphe créé;
    grid on;%affiche les grilles selon les coordonnées des axes;
    g=input('entrez le N° du graphe que vous souhaitez voir:')% selection du graphe que l'on souhaite voir tout seul;
    figure(2)
    hold off;
    hold on;%garde en mémoire le premier graphe déjà inscrit sur la figure 2;
    plot(tracks(1:j,g),'.','DisplayName', 'tracks(1:g,2)');%graphique avec des"."des données expérimentales sélectionnée;
    plot(tracks(1:j,g));%graphique en ligne de la même courbe pour permettre de voir les données NAN;
    title ('le graphe sélectionné est');
    grid on;
    hold off;
    figure(3)
    h=surf(tracks(1:100,1:g));%affiche les 100 premiers points des g graphes sélectionnés;
    figure(4)
    x=(1:j);%valeurs des x pour faire le graphe des points expérimentaux;
    xi=(1:0.5:j);% valeur des xi, avec l'interval de calcul, pour faire le graphe d'interpolation des xi;
    y=tracks(x,g)% valeur en y des valeurs sélectionnées pour faire le graphe des points expérimentaux;
    yi = interp1(x,y,xi,'cubic');%yi correspondants aux points xi recalculés pour l'interpolation avec la méthode de la ligne 123(cubic);
    title ('resultat de l''interpolation');
    hold on;
    plot (x,y,'o');%graphe des points expérimentaux avec des o comme symbole;
    plot (xi,yi,'.');% graphe des points d'interpolation calculés par la méthode sélectionnée en ligne 123 avec des . comme symbole;
    grid on;
    hold off;
    for t=1:j;% le nombre de lignes dans le tableau de données;
            t;%valeur de l'indice t;
            tracks(t,g);%valeur des tracks a l'indice t;
            u = isnan(tracks(t,g));%sélectionne les points non numérique dans le tableau de données; 
        if u==1;%valeur pour lesquelles tracks est non numérique;
            t
            u
            tracks(t,g) = (tracks(t-100,g));%essaie de trouver un t-100 tracks qui soit numériquement acceptable;
            tracks(t,g);%affiche le nouveau tracks
            %v=input ('cela s''arrete la');% arrête le programme pour tout point non numérique;
        end
    end
    figure (5)
      plot (tracks(:,g),'.')% affiche le résultat apres la modification de t-100 points;
    v=input( 'bonjour le programme ')
    %tdfFileClose (fid);
    La première partie n'est que la lecture du fichier TDF. La suite plus commentée, du mieux que j'ai pu, est ce que je souhaiterai voir se produire dans l'interface graphique générée par guide. Voici le code simplifié de ce que le programme guide a généré
    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
    function varargout = essai(varargin)
    % ESSAI M-file for essai.fig
    %      ESSAI, by itself, creates a new ESSAI or raises the existing
    %      singleton*.
    %
    %      H = ESSAI returns the handle to a new ESSAI or the handle to
    %      the existing singleton*.
    %
    %      ESSAI('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in ESSAI.M with the given input arguments.
    %
    %      ESSAI('Property','Value',...) creates a new ESSAI or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before essai_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to essai_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 essai
     
    % Last Modified by GUIDE v2.5 19-Sep-2008 12:39:13
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @essai_OpeningFcn, ...
                       'gui_OutputFcn',  @essai_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 essai is made visible.
    function essai_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 essai (see VARARGIN)
     
    % Choose default command line output for essai
    handles.output = hObject;
    %[handles.x,handles.y,handles.xi,handles.yi,handles.g]=acqdata;
    %set(handles.listbox2,'string',handles.x);
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes essai wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = essai_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 during object creation, after setting all properties.
    function listbox2_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to listbox2 (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 selection change in listbox2.
    function listbox2_Callback(hObject, eventdata, handles)
    % hObject    handle to listbox2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Hints: contents = get(hObject,'String') returns listbox2 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from listbox2
     
     
    % --- 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)
    J'espère qu'avec tout cela vous pourrez m'aiguiller vers une solution qui tienne debout. Je ne vous cache pas que ma connaissance de l'anglais est tres aproximative, j'ai fait huit ans d'allemand car on les redoutais a mon époque. L'anglais n'était pas une langue destinée a être internationale. Bref voila mes problèmes et je compte sur vous pour m'en sortir, mon poste est en jeu. Mais que cela ne soit pas une priorité car je suppose que vous avez d'autres choses a faire que d'aider une personne qui ne comprend rien a rien dans ce dédalle d'informatique, moi je connais le basique et j'ai été formé là dessus.
    Bon courage et merci encore d'aider tout ces gens qui son dans la panade.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Et si tu nous décrivais un peu mieux ton interface (et son fonctionnement) ?
    Pourrais-tu attacher une image par exemple ?

    Tu cherche à exécuter la fonction tdfReadData3D en cliquant sur un bouton, puis et à afficher les valeurs qui sont lues, c'est ça ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/09/2014, 09h51
  2. Réponses: 6
    Dernier message: 25/05/2012, 20h56
  3. Réponses: 2
    Dernier message: 05/09/2011, 10h53
  4. Réponses: 5
    Dernier message: 14/04/2007, 18h47
  5. Réponses: 2
    Dernier message: 15/01/2007, 14h35

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