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 :

Problème d'affichage (axe graphique)


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Problème d'affichage (axe graphique)
    Bonjour,

    Comme le dit l'intitulé, j'ai un problème d'affichage sur mon programme ou plutôt d'allocation des axes je pense.

    Je fais un programme sur la trajectoire d'un tir ballistique (juste pour donner les contexte) et je veux afficher le tir en 3 dimensions et suivant les axes xOy et xOz.

    Cela marche très bien lorsque je le lance une première fois, il affiche mes graphiques dans les axes que j'ai construit avec Guide et ma fenêtre. Mais lorsque je rappuis sur le bouton OK pour refaire un calcul, il ne prend plus mes axes et en crée d'autres, les uns sur les autres et qui prennent l'ensemble de ma fenêtre.

    Voici un exemple de mon code pour l'affichage que j'utilise pour les trois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Dim3=findobj('tag','axes3d');
        set(gcf,'CurrentAxes',Dim3);
        cla
        plot3(X,Y,Z,'b',X1,Y1,Z1,'k');
        grid on;
    	view([101 38]);
    	xlabel('X');
    	ylabel('Y');
    	zlabel('Z');
    	axis([Xmin,Xmax+Xmax/10,Ymin,Ymax+Ymax/10,0,Zmax+Zmax/10]);
    Si quelqu'un pouvait m'aider car ça fait trois jours que j'y suis et tous mes tests ne marchent pas.

    Merci

  2. #2
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Comme je vois que ca n'inspire pas grand monde, j'ai fais des impressions d'écran pour détailler un peu plus et que vous cerniez le problème plus précisement.

    On peut donc voir la fenêtre normale et celle avec un problème.


    Merci
    Images attachées Images attachées   

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Salut,

    Je ne sais pas vraiment, est-ce que tu lorsque tu relance ta procédure tu fermes ta fenètre avant de la réouvrir?

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par totoc1001
    Salut,

    Je ne sais pas vraiment, est-ce que tu lorsque tu relance ta procédure tu fermes ta fenètre avant de la réouvrir?

    Non, j'ai ma fenêtre de départ où je rentre mes paramètres et j'appuis sur un bouton pour lancer le calcul et il m'affiche mes graphiques.
    Ensuite pour refaire une acquisition je modifie juste les paramètres, j'appuis sur le même bouton et ça plante....!!!

    ce que je comprend pas aussi c'est que la fonction cla ne fonctionne pas non plus, le tir precedent reste et n'est pas éffacé.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    je suis pas très doué mais peut etre un ; apres cla
    c'est juste une idée comme sa

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 99
    Points : 77
    Points
    77
    Par défaut
    Je n'ai jamais essayé avec des axes 3D, mais je sais que en 2D, si tu utilise 2 fois la même figure et que la seconde n'a pas la même taille, alors elle empiètera sur la première.
    Tu peux essayer de mettre un clf au début deton code.
    pour clear figure.
    Sinon, jvois pas trop.

    Désolé
    Thomas

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci mais le clf il efface ma fenêtre principale et non ce qui est sur mes axes.

    Et sinon es-ce-que quelqu'un connait une autre méthode pour choisir un axe déjà créé et dire au programme d'écrire de-dans.

    Autre que "findobj" et "set".

    Je pense en faite que c'est mon utilisation de gcf qui fait tout planter car si j'ai bien compris cette fonction crée un nouvel axe si il y en a pas (bon moi j'en ai mis un, mais bon).

    Merci

  8. #8
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut axes()
    Bonjour,

    vous avez demandé s'il ya une autre fonction pour choisir un axe déja créé, la reponse est oui, et la fonction est : axes(handles.axes3d);
    au lieu de findobj( ) et set(), mais n'oubliez de passer la variable handles dans votre sous-fonction.
    mais je ne pense pas que le probléme est là, car j'ai essayé votre methode et ca marche bien, je pense qu'il y a quelque chose qui modifie les proprietés de axes3d apres votre premier affichage (par ex sa position). essayez d'executer le programme en pas à pas, ca vous permet de localiser le probleme.

  9. #9
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci mais j'ai déjà essayé cette fonction et il m'affiche au second passage une erreur, du type :
    ?? Error using ==> axes
    Invalid object handle.
    Maintenant pour le debug en pas à pas, il fait tout normalement, mais à la fin il rentre dans le fichier gui_mainfcn.m et va jouer avec ce code, que je comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if gui_Create == 0
        varargin{1} = gui_State.gui_Callback;
        if nargout
            [varargout{1:nargout}] = feval(varargin{:});
        else
            feval(varargin{:});   % il s'arrete ici!!
        end
    else
        if gui_State.gui_Singleton
            gui_SingletonOpt = 'reuse';
        else
            gui_SingletonOpt = 'new';
        end
    et après il retourne dans mon .m de ma figure et va sur ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:}); %il s'arrete ici!!
    end
    Si quelqu'un peut m'aider à le comprendre, ca vient peut-être de là ?

    Merci

  10. #10
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bonjour,
    pour le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ?? Error using ==> axes
    Invalid object handle.
    je pense que tu as oublié un "s", c'est handles et non pas handle, et je tien à te rapeler de ne pas oublier de passer handles comme un paramétre dans ta fonction sinon il ne la reconnait pas.

  11. #11
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je suis désolé, mais comment tu utilise la fonction axes(), parce que moi j'utilise pas de handles de-dans.

    soit je met : axes(h) avec h = findobj('tag','axes3d')

    soit je met : axes('tag','axes3d')

    et sinon avec axes(handles.h) (h étant le même que precédemment)
    cela m'affiche directement l'erreur sans passer par le premier tour .

  12. #12
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    si le programme d'affichage est directement dans la fonction PushBotton_callback, tu peux seulement ecrir axes(handles.axes3d); à la place de findobj() et set().par contre si tu appelle une autre fonction tu doit passer handles comme parametre par ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function Affichage(handles, ......)
    axes(handles.axes3d);
    ...

  13. #13
    Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ok

    Bon j'ai tout viré et essayé avec la fonction axes comme tu me l'a donné et ca marche.

    Merci à tous pour votre aide

    Bonne soirée

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

Discussions similaires

  1. Problème d'affichage des graphiques avec subplot
    Par Cver1 dans le forum Octave
    Réponses: 7
    Dernier message: 06/12/2009, 12h25
  2. Problème d'affichage de graphique sous BLT
    Par kiki50000 dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 10/10/2007, 16h44
  3. [2.2.0] Problème d'affichage des graphiques
    Par nicolep dans le forum BIRT
    Réponses: 2
    Dernier message: 03/07/2007, 14h17
  4. [JasperReport] Problème d'affichage de graphique
    Par lars528 dans le forum Documents
    Réponses: 5
    Dernier message: 02/03/2007, 15h57
  5. [Opengl] Problème d'affichage - carte graphique.. ?
    Par Akwel91 dans le forum OpenGL
    Réponses: 5
    Dernier message: 02/01/2007, 22h18

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