Bonjour
J'effectue une interface graphique sous GUIDE.
Je dois afficher 1 courbe, qui varie selon 2 paramètres. Ces 2 paramètres sont modifiables via 2 pop-up-menus.
J'ai un souçis au niveau de la structure handles.
Voici pour code pour préciser mon problème
1er popup-menu :
2è pop-up-menu :
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 %recup de la structure handles à jour handles = guidata(gcbf); %Simplification d'écriture temps = handles.temps; x = handles.x; Te = handles.Te; %Effacement des courbes 3 et 4 cla (handles.axes3); cla (handles.axes4); %Récupération de la valeur de N du pop-menu str=get(hObject,'String'); val=get(hObject,'Value'); str=cellstr(str); str=str{val}; N = str; % N est de type char N = str2double(N); %conversion de N en type double tic %définition de la base de fréquence fe=1/Te; % fréquence d'échantillonnage f=fe*(-N/2:N/2-1)/N; %libération de l'espace mémoire clear s S; %Test si on peut faire au moins 2 échantillons de longueur N sur le signal if (length(temps) < (2*N)) cla (handles.axes2); cla (handles.axes3); cla (handles.axes4); title(handles.axes2,'Représentation du signal temps/fréquence','Color','b'); title(handles.axes3,'Spectre','Color','b'); errordlg('Désolé, mais le nombre de points choisis pour la fft est trop grand par rapport au nombre d''échantillons du signal, veuillez choisir une valeur de N plus faible','N est trop grand!'); end % sauvegarde de la structure handles guidata(hObject, handles); %Récupération de la fenêtre de pondération popupmenu3_Callback(hObject, eventdata, handles); %recup de la structure handles à jour handles = guidata(gcbf); handles.swin=swin; Calcul puis affichage
La valeur du 1er popupmenu est stocké dans la variable N, et la 2è dans la variable swin.
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 %recup de la structure handles à jour handles = guidata(gcbf); handles %Effacement des courbes 3 et 4 cla (handles.axes3); cla (handles.axes4); N=handles.N; temps = handles.temps; Te= handles.Te; %Récupération de la valeur de win du pop-menu str=get(hObject,'String'); val=get(hObject,'Value'); str=cellstr(str); str=str{val}; win = str % N est de type char %Création de la fenêtre if length(win) == 7 & win == 'Hamming' swin = hamming(N); elseif length(win) == 7 & win == 'Hanning' swin = hann(N); elseif length(win) == 13 & win == 'Rectangulaire' swin = (ones(1,N)); elseif length(win) == 8 & win == 'Blackman' swin = blackman (N); elseif length(win) == 1 & win == ' ' swin = 1; elseif length(win) == 8 & win == 'Bartlett' swin = bartlett(N); end handles.swin = swin; guidata(gcbf,handles);
Mon problème est que dans le 1er pop-up-menu, j'ai besoin de swin, or il ne pas dans la structure handles, alors que j'ai bien appelé le callback du 2è popupmenu, et mis la structure handles à jour..
Je ne vois pas d'où me venir mon erreur...![]()
Partager