[GUIDE] problème de handles
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:
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:
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... :?