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 :

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
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
%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);
La valeur du 1er popupmenu est stocké dans la variable N, et la 2è dans la variable swin.

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...