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 :

Programme à l'aide d'un GUI : faire varier une seule variable [Débutant]


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
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Par défaut Programme à l'aide d'un GUI : faire varier une seule variable
    Bonjour !

    Je suis débutant sur Matlab et je cherche un moyen de faire varier une variable à l'aide d'une barre défilante (ou bouton) et afficher mon résultat final sur un graphique.

    Voici mon programme :

    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
    clc
    clear all
    close all
    test = xlsread('S11.xlsx');
    eps_r = 2.5;
    tg_perte = 0.025;
    epsilon_etoile =  eps_r*(1 - 1i*tg_perte);
    PI = pi;
    C = 3.0 * 10.^8;
    f = linspace(6,18,801)*10.^9;
    t=7.5;
    % 
    lambda_0 = (C ./ f)*10.^3;
    lambda_g = lambda_0 ./ sqrt(eps_r); 
    gamma = (2*PI./lambda_g)*sqrt(1 - 1i*tg_perte);
    % 
    R1p = (1 - sqrt(epsilon_etoile))/(1 + sqrt(epsilon_etoile));
    R2p = (sqrt(epsilon_etoile) - 1)/(1 + sqrt(epsilon_etoile));
    %
    exponentiel = exp(-1i*2*gamma.*t);
    %
    REFLEXION = (R1p + R2p.*exponentiel)./(1 + R2p*R1p.*exponentiel);
    AS11V = test(:,1);
     
    plot(f,AS11V,'r');
    title('Mesure paramètre S11 vertical')
    hold on
    plot(f,20*log10(abs(REFLEXION)));
    Je veux faire varier la variable eps_r allant de 1 à 5 avec un pas de 0.1 à l'aide d'une barre défilante et visualiser graphiquement la variable REFLEXION en fonction de f (la fréquence). Malheureusement, je n'ai jamais fait de GUI auparavant et j'aimerai apprendre.

    Avez vous des idées à me proposer ? Merci d'avance.

    Cordialement TreeSelectif.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Programme à l'aide d'un GUI : faire varier une seule variable
    Bonjour,
    Le plus simple est d'utiliser guide.
    Néanmoins tu peux le faire en ligne. Un exemple simple :

    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
    function slidetest
    global val
    sld = uicontrol('Style', 'slider',...
        'Min',0,'Max',100,'Value',100,...
        'Position', [200 200 120 20],...
        'Callback', @slid);
    text(0.25,0.47,'0')
    text(0.58,0.47,'100')
    val=100;
    while val>0
        if val==0
            break
        end
        pause(0.5)
    end
    disp('Fin')
     
    function slid(source,event)
    global val
    val=get(source,'Value');
    disp(val);

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Par défaut
    Citation Envoyé par phryte Voir le message
    Bonjour,
    Le plus simple est d'utiliser guide.
    Néanmoins tu peux le faire en ligne. Un exemple simple :

    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
    function slidetest
    global val
    sld = uicontrol('Style', 'slider',...
        'Min',0,'Max',100,'Value',100,...
        'Position', [200 200 120 20],...
        'Callback', @slid);
    text(0.25,0.47,'0')
    text(0.58,0.47,'100')
    val=100;
    while val>0
        if val==0
            break
        end
        pause(0.5)
    end
    disp('Fin')
     
    function slid(source,event)
    global val
    val=get(source,'Value');
    disp(val);
    Salut phryte ! Merci d'avoir répondu.

    Je n'ai pas réussi à l'implémenter par rapport à mon programme.

    Sauf erreur de ma part, j'ai ouvert un nouveau fichier script et j'ai coller ton code puis je l'ai adapté par rapport à mon programme, ensuite j'ai appelé la fonction slidetest dans mon programme mais du coup je me retrouve avec seulement un slider.

    Pourrais-tu m'éclaircir s'il te plait ? Merci d'avance.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Par défaut
    Citation Envoyé par treeselectif Voir le message
    Salut phryte ! Merci d'avoir répondu.

    Je n'ai pas réussi à l'implémenter par rapport à mon programme.

    Sauf erreur de ma part, j'ai ouvert un nouveau fichier script et j'ai coller ton code puis je l'ai adapté par rapport à mon programme, ensuite j'ai appelé la fonction slidetest dans mon programme mais du coup je me retrouve avec seulement un slider.

    Pourrais-tu m'éclaircir s'il te plait ? Merci d'avance.
    C'est bon j'ai réussi finalement ^_^ , merci beaucoup !

    Cependant, j'ai un petit soucis visuel quand je superpose ma courbe statique avec ma courbe dynamique !

    Quand j'incrémente ma variable eps_r à l'aide du slider, ma courbe dynamique se superpose avec la courbe n-1 et j'aimerai qu'elle s'efface. Peut-on palier à ce problème ?

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,
    Un exemple, cependant il vaut mieux utiliser guide.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    function essai_test
    clc
    clear all
    close all
    global val
    sld = uicontrol('Style', 'slider',...
        'Min',1,'Max',100,'Value',100,...
        'Position', [100 350 120 20],...
        'SliderStep',[0.1 0.1],...
        'Callback', @slid);
     
    val=2.5;
    %test = xlsread('S11.xlsx');
    test=-35*rand(1,10);
    tg_perte = 0.025;
    PI = pi;
    C = 3.0 * 10.^8;
    f = linspace(6,18,801)*10.^9;
    t=7.5;
    lambda_0 = (C ./ f)*10.^3;
    AS11V = test(:,1);
    plot(f,AS11V,'r');
    hold on
    h=plot(0,0);
    grid
    title('Mesure paramètre S11 vertical')
    while val>1 % FIN pour eps-r=1
    eps_r = val;
    epsilon_etoile =  eps_r*(1 - 1i*tg_perte);
    lambda_g = lambda_0 ./ sqrt(eps_r); 
    gamma = (2*PI./lambda_g)*sqrt(1 - 1i*tg_perte);
    % 
    R1p = (1 - sqrt(epsilon_etoile))/(1 + sqrt(epsilon_etoile));
    R2p = (sqrt(epsilon_etoile) - 1)/(1 + sqrt(epsilon_etoile));
    %
    exponentiel = exp(-1i*2*gamma.*t);
    %
    REFLEXION = (R1p + R2p.*exponentiel)./(1 + R2p*R1p.*exponentiel);
    %plot(f,20*log10(abs(REFLEXION)))
    set(h,'Xdata',f,'Ydata',20*log10(abs(REFLEXION)))
     
    pause(1e-3)
    end
     disp('FIN')
     
     
     
     
    function slid(source,event)
    global val
    val=get(source,'Value')/20;
    disp(val)

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 33
    Par défaut
    Merci pour ta réactivité phryte !

    Le programme fonctionne comme je le souhaitais.

    Ce site est génial !

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

Discussions similaires

  1. faire varier une distance entre deux objets
    Par Neuropsy dans le forum VB.NET
    Réponses: 1
    Dernier message: 05/11/2009, 09h44
  2. [MySQL] Faire varier une liste en fonction d'une autre dans un formulaire
    Par lemirandais dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/01/2009, 22h45
  3. [Dates] Faire varier une donnée toutes les 30 minutes
    Par esther60 dans le forum Langage
    Réponses: 7
    Dernier message: 18/04/2008, 20h18
  4. [Macro de Recherche] Comment faire varier une 4eme variable
    Par Vin_SuFu_R@T dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/01/2008, 12h35
  5. faire varier une condition
    Par PAYASS59 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/08/2007, 14h52

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