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 :

modelisation pendule simple.Probleme d'interface graphique


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut modelisation pendule simple.Probleme d'interface graphique
    Bonjour,

    J'avais choisi de modeliser un pendule simple sur matlab comme sujet de projet(en effectuant une approximation des petites oscillations)
    Le programme serait comme suit:


    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
    figNumber=figure( ...
          'Name','Pendule simple', ...
          'NumberTitle','off', ...
          'Visible','off', ...
          'DoubleBuffer','on', ...
          'Color', [1 1 1], ...
          'BackingStore','off');
       axes( ...
          'Units','normalized', ...
          'Position',[0.05 0.05 0.75 0.90], ...
          'YGrid','on','XGrid','on',...
          'NextPlot','add');
     figure(figNumber);
       L=10;       % longueur du fil
       A=pi/4;     % amplitude maximale
       x=[0 0];
       y=[0 0];
       y0=10;
       h=plot(x,y);
       set(h,'color',[1 0 0]);
       set(h,'lineWidth',1);
       h1=plot(-L*sin(-A),-L*cos(-A)+y0,'.');
       set(h1,'MarkerSize',60);
       set(h1,'color',[1 1 0]);
       set(h1,'lineWidth',38);
       axis([-10 10 -10 10])
       g=9.81;
       T=2*pi*sqrt(L/g);amort=0.1;
       pas=0.01;
       %t=0;
    %=======================================
        for t =0:pas:100
         teta=-A*cos(2*pi/T*t)*exp(-amort*t);
         x=[0 -L*sin(teta)];
         y=[y0 -L*cos(teta)+y0];
         set(h,'Xdata',x,'YData',y)
         set(h1,'Xdata',x(2),'YData',y(2));
         drawnow
        end


    Le programme fonctionne sans aucun probleme majeur.

    Néanmoins,j'aimerais creer une interface graphique pour l'utilisateur pour qu'il puisse saisir directement les variables du workspace.(longueur du fil,amortissement...)
    J'ai essayer de le faire avec le GUI mais en vain...par manque de connaissance techniques sur le GUI.
    J'ai essayé de lire les tutos proposés mais j ai pas pu appliqué sur matlab pour mon programme.

    Je vous prie de bien vouloir m'aider dans cette tache.
    Je vous en supplie...je suis déséspérée



    Je vous en remercie d'avance.


    Bonne journée

  2. #2
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    S'il s'agit juste de demander à l'utilisateur de rentrer des valeurs tu peux utiliser la fonction toute faite INPUTDLG.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    S'il s'agit juste de demander à l'utilisateur de rentrer des valeurs tu peux utiliser la fonction toute faite INPUTDLG.
    En fait,il s'agit de demander a l utilisateur d'entrer la valeur une variable(par exemple la longueur du fil..ou l'angle maximale ) pour que l'animation s'execute pour les valeurs saisies par l'utilisateur.

    J'espere que vous voyez ce que je veux dire...je ne suis qu'une débutante

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Une solution serait d'ajouter dans ta figure un (ou plusieurs) UICONTROL de type edit pour que l'utilisateur rentre les données et un UICONTROL de type pushbutton pour les valider (et les prendre en compte).

    Ca pourrait donner quelquechose comme ca:
    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
     
    % Create figure
    figNumber=figure( ...
          'Name','Pendule simple', ...
          'NumberTitle','off', ...
          'Visible','off', ...
          'DoubleBuffer','on', ...
          'Color', [1 1 1], ...
          'BackingStore','off');
    % Create axes
       axes( ...
          'Units','normalized', ...
          'Position',[0.05 0.05 0.75 0.90], ...
          'YGrid','on','XGrid','on',...
          'NextPlot','add');
    % Create edit to allow user to set data
        uicontrol(...
           'Style', 'edit', ...
           'Units', 'normalized', ...
           'Position', [0.85 0.5 0.1 0.05]);
    % Create button to validate data
        uicontrol(...
           'Style', 'pushbutton', ...
           'Units', 'normalized', ...
           'Position', [0.85 0.3 0.1 0.05], ...
           'String', 'Valider', ...
           'Callback', @UpdateDisplay);
    ...
    Il s'agit juste ensuite de coder la fonction UpdateDisplay pour récupérer les données et mettre à jour ton tracé en fonction...

    Bonne journée,
    Duf

  5. #5
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    Citation Envoyé par meteora9 Voir le message
    En fait,il s'agit de demander a l utilisateur d'entrer la valeur une variable(par exemple la longueur du fil..ou l'angle maximale ) pour que l'animation s'execute pour les valeurs saisies par l'utilisateur.

    J'espere que vous voyez ce que je veux dire...je ne suis qu'une débutante
    La solution de Duf est plus élaborée et plus jolie mais as-tu au moins regarder l'aide de la fonction dont je t'ai parlée, elle répond exactement à ton besoin.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    La solution de Duf est plus élaborée et plus jolie mais as-tu au moins regarder l'aide de la fonction dont je t'ai parlée, elle répond exactement à ton besoin.
    Bonjour!
    Oui oui j'avais lu le help..mais je n'ai pas su comment l'appliquer en mon programme..je vais essayer avec la solution de Duf.

    Merci pour ton aide Caro-Line

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par duf42 Voir le message
    Bonjour,

    Une solution serait d'ajouter dans ta figure un (ou plusieurs) UICONTROL de type edit pour que l'utilisateur rentre les données et un UICONTROL de type pushbutton pour les valider (et les prendre en compte).

    Ca pourrait donner quelquechose comme ca:
    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
     
    % Create figure
    figNumber=figure( ...
          'Name','Pendule simple', ...
          'NumberTitle','off', ...
          'Visible','off', ...
          'DoubleBuffer','on', ...
          'Color', [1 1 1], ...
          'BackingStore','off');
    % Create axes
       axes( ...
          'Units','normalized', ...
          'Position',[0.05 0.05 0.75 0.90], ...
          'YGrid','on','XGrid','on',...
          'NextPlot','add');
    % Create edit to allow user to set data
        uicontrol(...
           'Style', 'edit', ...
           'Units', 'normalized', ...
           'Position', [0.85 0.5 0.1 0.05]);
    % Create button to validate data
        uicontrol(...
           'Style', 'pushbutton', ...
           'Units', 'normalized', ...
           'Position', [0.85 0.3 0.1 0.05], ...
           'String', 'Valider', ...
           'Callback', @UpdateDisplay);
    ...
    Il s'agit juste ensuite de coder la fonction UpdateDisplay pour récupérer les données et mettre à jour ton tracé en fonction...

    Bonne journée,
    Duf
    Bonjour ,
    Merci beaucoup pour ton aide
    Toutefois,je sais toujours pas coder la fonction Updatedisplay ni l'introduire dans mon programme...
    Pourriez vous me dire comment faire?par exemple..demander la saisie d'une longueur L et executer l'animation avec ce L saisi.

    Je vous en serais reconnaissante.

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Quel est ton problème pour coder cette fonction?

    Pour ce qui est de l'intégration, il suffit de la placer dans le même fichier à la suite...

    Sinon, c'est vrai que la solution de Caro est quand même bien plus simple que la mienne, ca pourrait être un bon début pour toi (une première étape pour comprendre le fonctionnement...)

  9. #9
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    On ne fera pas le code pour toi.
    Je trouve quand même l'aide d'INPUTDLG plutôt bien faite et l'exemple plutôt parlant....

    Je t'en fais quand même un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    answer=inputdlg('Rentrer le longueur de fil','Donnees',1,{10});
    L=answer{1};%note : verifier si utilisateur a apputé sur Cancel

Discussions similaires

  1. probleme d'interface graphique
    Par Linu6 dans le forum Debian
    Réponses: 7
    Dernier message: 16/04/2008, 09h41
  2. probleme de divergence avec runge kutta d'ordre 2 pour un pendule simple
    Par fab13 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 25/11/2006, 20h19
  3. [vb.net]probleme d'interface graphique
    Par os_rasta dans le forum Visual Studio
    Réponses: 4
    Dernier message: 09/11/2006, 08h47
  4. Choix de langage pour interface graphique simple
    Par C_C dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 04/04/2006, 20h12
  5. Problème Visu Interface Graphique
    Par Bweb dans le forum Applications et environnements graphiques
    Réponses: 12
    Dernier message: 16/08/2004, 15h52

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