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 :

Couper une courbe dans un plot (GUI)


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut Couper une courbe dans un plot (GUI)
    Bonjour,

    Je souhaite couper une courbe et n'afficher que ce qu'il y a avant, a partir d'une certaine valeur dans mes valeurs en abscisses, d'un plot generé par un GUI en appuyant sur un pushbutton.

    Le probleme c'est que matlab m'affiche quand meme toute la courbe. Pourtant, lorsque je génere ce plot normalement (via l'éditeur), il n'y a aucun soucis.

    Voici mon code (s est la variable a partir de laquelle sera coupé ma courbe, et est deja calculé préalablement) :

    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
    % --- Outputs from this function are returned to the command line.
    function varargout = Plot_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;
     
    function LocSetLimits(ax,lims)
    set(ax,'XLim',lims(0:s),'XLimMode','manual');
     set(ax,'view',[0 s]);
     
    % --- Executes on button press in plot.
    function plot_Callback(hObject, eventdata, handles)
    % hObject    handle to plot (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global fvar;
    global G;
    global fmax;
    global ABS;
    global s;
     
    s=fmax+150;
     
    plot (fvar,G),hold on,title 'Sound absorption coefficient', xlabel 'Frequency (Hz)', ylabel 'Amplitude';
    Je ne comprends pas ce qui cloche, pouvez vous m'éclairer svp ?

    Merci d'avance.

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

    Tu sembles fixer la variable globale s dans la fonction callback plot_Callback, mais ce même s semble inconnu dans la fonction LocSetLimits : il manquerait global s au début.
    T'assures-tu de plus de bien appeler cette dernière fonction ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut
    Justement peu de temps apres avoir posté je me suis rendu compte qu'il n' y avait pas de global. Je l'ai ajouté, mais rien n'a changé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function LocSetLimits(ax,lims)
    global fmax;
    global s;
    s=fmax+150;
     
    set(ax,'XLim',lims(0:s),'XLimMode','manual');
    set(ax,'view',[0 s]);
    Qu'entends tu par bien appeler ma fonction ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Et bien je veux dire utiliser. Si tu souhaites que le code qu'elle contient soit exécuté, il faut bien avoir un appel du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LocSetLimits(valeur_ax, valeur_lims);
    à un moment ou un autre

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 44
    Par défaut
    Ahh je vois. Je pense que je n'utilise pas correctement la fonction LocSetLimits(ax,lims).

    Voici son implantation dans mon code :

    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
    function LocSetLimits(ax,lims)
    global fmax;
    global s;
    s=fmax+150;
     
    set(ax,'XLim',lims(0:s),'XLimMode','manual');
    set(ax,'view',[0 s]);
     
    % --- Executes on button press in plot.
    function plot_Callback(hObject, eventdata, handles)
    % hObject    handle to plot (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    global fvar;
    global Absvalues;
    global fmax;
    global ABS;
    global Num_of_values;
    global From;
    global To;
    global Increment;
    global s;
    s=fmax+150;
     
    LocSetLimits(ax,lims);
    plot (fvar,Absvalues),hold on,title 'Sound absorption coefficient', xlabel 'Frequency (Hz)', ylabel 'Amplitude';
    Evidemment, ca ne fonctionne pas. Je ne vois pas comment la placer dans la gestion de mon GUI.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Après ta ligne plot. Cette fonction a tendance à rechanger les limites.

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

Discussions similaires

  1. Couper une chaine dans un tableau
    Par Z-fly dans le forum Réseau
    Réponses: 5
    Dernier message: 06/07/2008, 21h31
  2. couper une chaine dans une requete sql ss oracle
    Par gnaoui_9999 dans le forum Oracle
    Réponses: 2
    Dernier message: 30/05/2008, 18h28
  3. Réponses: 6
    Dernier message: 07/04/2008, 17h21
  4. [API WIN32] Création d'une courbe dans un Dialog
    Par juni38 dans le forum Visual C++
    Réponses: 2
    Dernier message: 07/08/2007, 15h44
  5. Tracer une courbe dans un formulaire ?
    Par jessy212 dans le forum Access
    Réponses: 5
    Dernier message: 04/09/2006, 16h46

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