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 :

Reproduire un plot à partir de ma gui


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Par défaut Reproduire un plot à partir de ma gui
    Bonjour,
    Je développe un outil à l'aide de Guide. Dans mon interface graphique j'ai un objet axes que j'utilise pour tracer différents signaux. Afin d’exploiter les données tracées j'ai créé une fonction dans une toolbar qui me permet de reproduire la figure tracée sur mon "axes" dans une nouvelle figure.
    Le code utilisé est le suivant :

    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
    function uipushtool8_ClickedCallback(hObject, eventdata, handles)
    % hObject    handle to uipushtool8 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    h_title = get(gca,'title'); %sauvgarder les titres de la figure
    title_current = get(h_title ,'string'); %sauvgarder les titres de la figure
    h = get(gca,'child')
    yy = get(h, 'ydata');
    S = yy;
    figure('name',[title_current]);
    plot(S)
    title([title_current],'color','red','FontName', 'Segoe UI');
    xlabel('Time (unit: sampling time)');
    ylabel('Amplitude');
    grid on;
    Mon problème : quand j'effectue un subplot la fonction ne prend en compte que le dernier subplot (ce qui logique), je souhaiterai pouvoir tracer chaque subplot indépendamment ou sur la même figure. Alors je me pose pleins de questions : comment récupérer les handles de subplots ? comment faire une boucle sur les subplots ? quelle est la méthode la plus pertinente ?

    En vous remerciant d'avance,

    Bien cordialement,

    Mehdi

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

    gca retourne l'objet Axes courant, autrement dit le "subplot" ayant le focus.
    Tu peux te servir de la fonction findobj comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hSubplots = findobj(gcbf, 'type', 'axes');
    À noter qu'il existe la fonction copyobj pour faciliter la copie des objets.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Par défaut
    J'ai utilisé la fonction findall, j'ai réussi à le faire je ne sais pas si c'est la meilleure des solutions mais je partage quand même.

    Merci Jérôme



    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
    function uipushtool8_ClickedCallback(hObject, eventdata, handles)
    % hObject    handle to uipushtool8 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    nb_de_subplot = length(findall(gcf,'type','axes'));
    list_gca = findall(gcf,'type','axes');
     
    if nb_de_subplot == 1  
        h_title = get(gca,'title'); %sauvgarder les titres de la figure
        title_current = get(h_title ,'string'); %sauvgarder les titres de la figure
        h = get(gca,'child');
        yy = get(h, 'ydata');
        S = yy;
        figure('name',[title_current]);
        plot(S)
        title([title_current],'color','red','FontName', 'Segoe UI');
        xlabel('Time (unit: sampling time)');
        ylabel('Amplitude');
        grid on;
    elseif nb_de_subplot > 1
        for i=1:nb_de_subplot 
            ha = list_gca(i);
            h_title = get(ha,'title'); %sauvgarder les titres de la figure
            title_current = get(h_title ,'string'); %sauvgarder les titres de la figure
            h = get(ha,'child');
            yy = get(h, 'ydata');
            S = yy;
            figure('name',[title_current]);
            plot(S)
            title([title_current],'color','red','FontName', 'Segoe UI');
            xlabel('Time (unit: sampling time)');
            ylabel('Amplitude');
            grid on;
        end
     
    end


    Bien cordialement,

    Mehdi

  4. #4
    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
    Voici une version simplifiée :

    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
    function uipushtool8_ClickedCallback(hObject, eventdata, handles)
    % hObject    handle to uipushtool8 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    list_gca = findall(gcf,'type','axes');
     
    for i = 1:numel(list_gca)
        ha = list_gca(i);
        h_title = get(ha,'title'); %sauvgarder les titres de la figure
        title_current = get(h_title ,'string'); %sauvgarder les titres de la figure
        h = get(ha,'child');
        S = get(h, 'ydata');
        figure('name',title_current);
        plot(S)
        title(title_current,'color','red','FontName', 'Segoe UI');
        xlabel('Time (unit: sampling time)');
        ylabel('Amplitude');
        grid on;
    end
    Tu pourrais également te servir de la fonction copyobj pour copier chaque objet Axes créé avec subplot vers un nouvel objet Figure.
    Mais il faudra changer les dimensions de l'objet copié.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Par défaut
    Merci pour la réponse DUT, j'ai finalement utilisé la fonction copyobj c'est le plus simple.

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

Discussions similaires

  1. Charger un m-file de paramètres puis rouler Simulink à partir d'un GUI ?
    Par DomCote dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 18/09/2014, 17h14
  2. Plot "intéractif" sur ma GUI
    Par Throna dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 31/03/2010, 14h57
  3. Erreur d'éxecution modèle à partir d'un GUI
    Par DomCote dans le forum Simulink
    Réponses: 0
    Dernier message: 23/05/2008, 19h43
  4. Appeler une GUI à partir d'une GUI ?
    Par blanchonvincent dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2007, 11h04
  5. Appel d'un GUI fils à partir d'un GUI parent
    Par AsmaHaj dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/03/2007, 10h32

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