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 :

Comment programmer les 'push buttons'?


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Par défaut Comment programmer les 'push buttons'?
    Bonjour,
    Je suis actuellememt en stage et j'apprends a utiliser GUIDE...
    Seulement bien sur j ai un souci...
    En realite, pour l'instant je m'entraine mais je galere. J explique mon probleme :

    J'ai cree sous GUI une interface avec 3 push buttons et un popmenu. Dessus egalement j ai une partie reservee a un graphe (plot).

    Je me suis inspire des tutos mais je n'arrive pas a faire associer mes boutons avec le graphe (qui est un sinus).

    Je mets mon petit code (juste pour les boutons) :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % order of the filters
    N = 5;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Filtre de Butterworth
    [num, den] = butter(N, band, 'low');
    butterfilter = abs(freqz(num, den ,w));
    % butterfilter(current_data);
     
     
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
     
    % order of the filters
    N = 5;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
     
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % Filtre de Chebychev1
    [num, den] = cheby1(N, Rpass, band);
    cheby1filter = abs(freqz(num, den ,w));
    % plot(cheby1filter)
     
     
    % --- Executes on button press in pushbutton3.
    function pushbutton3_Callback(hObject, eventdata, handles)
    % order of the filters
    N = 10;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
    % hObject    handle to pushbutton3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Filtre elliptique
    [num, den] = ellip(N, Rpass, Rstop, band);
    ellipfilter = abs(freqz(num, den ,w));
    % plot(ellipfilter)
    Bien evidemment vous avez compris que je veux appliquer 3 filtres simples a ce sinus mais quand je l'utilise rien ne se passe...

    quelqu'un pourrait il me renseigner svp?
    Merci d avance

  2. #2
    Membre averti Avatar de pwfsic
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 56
    Par défaut
    Tu obtiens quelles erreurs ?

    Sinon je pense qu'au niveau de la présentation du code, il y a quelques soucis, es tu vraiment obligé de redéfinir les variables N, band, etc alors qu'elles ont les mêmes valeurs dans chacun des push buttons ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Par défaut
    Oui c est vrai pour les variables...ca sert a rien comme ca...

    En fait je n'obtiens pas d erreurs c est juste que mes filtres ne s'appliquent pas sur mon sinus de depart...il ne se passe rien!!!

    Mon sinus reste la comme si de rien n etait...

    Je mets le code entier si c est plus clair :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
     
    function varargout = GuiTest(varargin)
    %GUITEST M-file for GuiTest.fig
    %      GUITEST, by itself, creates a new GUITEST or raises the existing
    %      singleton*.
    %
    %      H = GUITEST returns the handle to a new GUITEST or the handle to
    %      the existing singleton*.
    %
    %      GUITEST('Property','Value',...) creates a new GUITEST using the
    %      given property value pairs. Unrecognized properties are passed via
    %      varargin to GuiTest_OpeningFcn.  This calling syntax produces a
    %      warning when there is an existing singleton*.
    %
    %      GUITEST('CALLBACK') and GUITEST('CALLBACK',hObject,...) call the
    %      local function named CALLBACK in GUITEST.M with the given input
    %      arguments.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help GuiTest
     
    % Last Modified by GUIDE v2.5 12-Jun-2007 14:40:57
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @GuiTest_OpeningFcn, ...
                       'gui_OutputFcn',  @GuiTest_OutputFcn, ...
                       'gui_LayoutFcn',  [], ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
       gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before GuiTest is made visible.
    function GuiTest_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   unrecognized PropertyName/PropertyValue pairs from the
    %            command line (see VARARGIN)
     
    % Creation du signal sinus
    x = -4*pi:0.01:4*pi;
    handles.sin=sin(x);
    plot(sin(x))
     
    % Choose default command line output for GuiTest
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
     
    % UIWAIT makes GuiTest wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = GuiTest_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;
     
     
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % order of the filters
    N = 5;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Filtre de Butterworth
    [num, den] = butter(N, band, 'low');
    butterfilter = abs(freqz(num, den ,w));
    % butterfilter(current_data);
     
     
    % --- Executes on button press in pushbutton2.
    function pushbutton2_Callback(hObject, eventdata, handles)
     
    % order of the filters
    N = 5;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
     
    % hObject    handle to pushbutton2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % Filtre de Chebychev1
    [num, den] = cheby1(N, Rpass, band);
    cheby1filter = abs(freqz(num, den ,w));
    plot(cheby1filter)
     
     
    % --- Executes on button press in pushbutton3.
    function pushbutton3_Callback(hObject, eventdata, handles)
    % order of the filters
    N = 10;
    % cut-off normalized frequency
    band = 0.5;
    % ripple in the pass-band (dB)
    Rpass = 0.5;
    % ripple in the stop-band (dB)
    Rstop = 20;
     
    w = 0:pi/255:pi;
    % hObject    handle to pushbutton3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    % Filtre elliptique
    [num, den] = ellip(N, Rpass, Rstop, band);
    ellipfilter = abs(freqz(num, den ,w));
    plot(ellipfilter)
     
     
     
    % --- Executes on selection change in popupmenu1.
    function popupmenu1_Callback(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % Determine the selected data set.
          str = get(source, 'String');
          val = get(source,'Value');
          % Set current data to the selected data set.
          switch str{val};
          case 'Son 1 Reggae' % User selects Peaks.
             current_data = peaks_data;
          case 'Son 2 Electro' % User selects Membrane.
             current_data = membrane_data;
          case 'Son 3 Classique' % User selects Sinc.
             current_data = sinc_data;
          end
     
     
    % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from popupmenu1
     
     
    % --- Executes during object creation, after setting all properties.
    function popupmenu1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to popupmenu1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    Merci d'avance si quelqu un sait ou se situe le probleme

  4. #4
    Membre averti Avatar de pwfsic
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 56
    Par défaut
    J'y connais rien du tout sur ces filtres lol mais je trouve ça bizarre aussi que tu n'utilises nulle part la valeur sin que tu as sauvegardé au début du code dans la structure handles. Les filtres ne s'appliquent pas sur le sinus peut être justement parce que tu ne l'appliques pas sur le sinus (mdr ca c'est de l'analyse). Es tu sûr de ta méthode au niveau des filtres ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 101
    Par défaut
    Les filtres c est normal si tu connais pas...Ca depend de ce qu on fait...

    Mais pour le sin c est vrai c est peu etr ca mais comment l appeler dans mes "function pushbutton1_Callback(hObject, eventdata, handles)"?

    franchement j y suis depuis ce matin et je comprends plus...

  6. #6
    Membre averti Avatar de pwfsic
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 56
    Par défaut
    Pour rappeler le sinus dans tes fonctions callbacks des push buttons, il faut que tu fasses :
    Après yapuka s'en servir lol ! Mais où, ça c'est un autre problème

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut
    ben....

    j'ai regardé les fonctions associées à tes pushbuttons, mais je vois nulle part la ligne qui indique que tu appliques ton filtres à ton sinus....

    ok dans la fonction d'initialisation tu faits handles.sin = sin(x), c'est cool, t'as ton sinus, mais après tu n'en fais absolument rien!!!

    dans la fonction de ton filtre de butterworth, à part créer le filtre, tu ne fais pas grand chose. l'idée maintenant que tu as ton filtre, c'est d'utiliser la fonction filter avec en paramètres ton sinus et ton filtre... non?

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

Discussions similaires

  1. [AJAX] comment programmer les evaluations avec les etoiles?
    Par makohsarah dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 26/04/2008, 22h44
  2. Comment programmer les codes couleurs au dela des 16 courants
    Par B-Pascal dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 01/02/2008, 09h31
  3. Réponses: 1
    Dernier message: 28/03/2007, 15h33
  4. Comment programmer les ScrollBars en vb.net ?
    Par andres007 dans le forum Visual Studio
    Réponses: 5
    Dernier message: 15/02/2007, 00h55
  5. Réponses: 3
    Dernier message: 23/11/2006, 17h59

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