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 :

Affichage de plusieurs courbes dans une fonction


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Affichage de plusieurs courbes dans une fonction
    Bonjour,

    Je suis en train de travailler sur un programme et même s'il marche, je souhaiterai l'améliorer un peu afin de le rendre plus exploitable
    Dans ce programme, j'ai une boucle (n itérations) qui fait appel à deux fonctions. Chacune de ces fonctions trace un graphique. Pour l'instant, lorsque je compile le programme, ce dernier m'affiche 2*n graphiques
    J'aimerai afficher toutes les courbes sur le même graphique afin de n'en avoir plus que 2 : un pour la fonction 1 et un pour la fonction 2

    Voici le programme que j'utilise pour l'instant

    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
    directory_name =uigetdir();
    [folder, files]=subdir(directory_name);
    folderSize=length(folder);
     
     
    for folder_i=1:folderSize
     
     
            Acell=reading(fullfile(folder{folder_i})); 
     
     
              [Em, Dm]=avg(fullfile(folder{folder_i}));
     
     
    end
    J'ai essayé de mettre un hold on et hold off, ou hold all et ca ne marche pas
    Je ne peux pas séparer la boucle en deux car j'ai besoin de la fonction reading pour appliquer avg à chaque itération

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Tu peux associer des handles à tes graphiques lors de leur création :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h1=figure(1);
    h2=figure(2);
    Lorsque tu veux tracer sur ta figure 1, avant d'utiliser plot tu spécifies la figure courante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(0, 'currentfigure', h1);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Salut, et merci pour ta réponse. Du coup, la première partie, ou tu associes h1 et h2 aux figures 1 et 2, tu le mettrais ou ? dans le programme principal ou dans les fonctions correspondantes ?

    Parce que dans les deux cas, ca me met que h1 n'est pas défini

  4. #4
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Tu définis tes handles h1 et h2 à l'extérieur de la boucle dans ton script principal. Ensuite la spécification des axes courants dépend de comment sont écris tes deux fonctions reading et avg. Mais pour faire simple, tu peux juste passer les handles en argument de tes fonctions (comme ça h1 et h2 existeront bien à l'intérieur de ces fonctions)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    D'accord merci, ca a l'air de marcher pour une des deux fonctions mais pas pour l'autre. Est ce que c'est exactement le même procédé pour une représentation semi logarithmique (semilogy) ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Salut,

    Lorsque tu utilises semilogy, rajoutes ceci lors de son appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    semilogy('parent', h2, ....);
    hold on;
    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Salut,

    Merci pour ta réponse, mais lorsque je mets ca, Matlab me renvoie que le premier argument de semilogy ('parent') n'est pas valable

  8. #8
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Euh, c'est quoi l'erreur exactement ?

    [EDIT] Ah, je crois savoir. Rajoutes ceci aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    h1=figure(1);
    h2=figure(2);
    h2=axes('parent', h2)
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    J'ai toujours ce problème de figures sans rien, sauf que maintenant, la figure 1 bugue aussi, a cause de l'ordre de grandeur de l'axe des ordonnées

  10. #10
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Tu peux copier les messages d'erreur que tu as obtenu juste avant et le message d'erreur que tu as obtenu là, stp? Re-donne aussi le code de ton programme principal, tel qu'il est, avec ou sans mes modifications, ça n'a pas d'importance.

    En tout cas, chez moi, ce bout de code ne génère aucune erreur par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    h3 = figure(3);
    a3 = axes('parent', h3);
    semilogy(1,2,'parent',a3);
    hold(a3,'on');
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Alors, le code que je viens de compiler c'est celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    directory_name =uigetdir();
    [folder, files]=subdir(directory_name);
    folderSize=length(folder);
    h1=figure(1);
    h2=figure(2);
    a2=axes('parent', h2);
    for folder_i=1:folderSize
     
            Acell=reading(fullfile(folder{folder_i}),h1); 
     
            [Em, Dm]=avg(fullfile(folder{folder_i}),h2);
     
    end
    Et j'obtiens ce message d'erreur

    Error using semilogy
    Bad property value found.
    Object Name: line
    Property Name: 'Parent'.

    Error in avg (line 197)
    semilogy(Em,Dm,'LineStyle','-','Marker','o','MarkerFaceColor','b','parent',h);

    Error in Average_Curve (line 13)
    [Em, Dm]=avg(fullfile(folder{folder_i}),h2);

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

    Ce n'est pas le handle de la figure qu'il faut passer, mais celui l'objet Axes.
    N'oublie pas d'appliquer hold(ax, 'on') sur tes axes pour superposer tes courbes.

  13. #13
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Ce n'est pas le handle de la figure qu'il faut passer, mais celui l'objet Axes.
    Oups my bad

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    D'accord, ca marche merci. Par contre, une fois que j'ai mes deux graphiques, j'ai encore cinq fenêtres qui s'ouvrent sans aucun graphique dessus. Est ce que vous savez comment je peux m'en débarasser ?

  15. #15
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Vérifie dans tes codes, tu dois avoir des "figure" qui trainent dans un de tes fichiers qui s'exécutent
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

Discussions similaires

  1. affichage de plusieurs images dans une même figure
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 20/02/2009, 18h45
  2. Réponses: 6
    Dernier message: 23/02/2008, 11h17
  3. plusieurs return dans une fonction?
    Par contremaitre dans le forum C
    Réponses: 27
    Dernier message: 21/02/2008, 09h35
  4. Affichage de plusieurs courbes dans un meme "axes"
    Par DOC doc doc dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 11/09/2007, 11h04
  5. Affichage d'un vector dans une fonction
    Par jamesleouf dans le forum SL & STL
    Réponses: 1
    Dernier message: 16/03/2006, 19h05

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