Bonjour à tous,

Première expérience avec GUIDE je me retrouve confronté à un problème à priori tout bête mais que je n'arrive pas à régler.
J'ai plusieurs valeurs pour lesquelles je permet à l'utilisateur de les définir dans des "edit".
Ces valeurs ont un rôle à jouer dans une fonction associée à un "popupmenu" dont voici le code :
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
function PopUpMenu_Callback(hObject, eventdata, handles)
% hObject    handle to PopUpMenu (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global Dm M
str = get(hObject, 'String');
val = get(hObject, 'Value');
switch str{val}
    case 'Moore_Neighborhood'
        Nn = str2double(get(handles.Nn_value, 'string'));
        Dm = [1 1 1;1 0 1;1 1 1]/Nn;
    case 'Uniform'
        u = str2double(get(handles.u_value, 'string'));
        nD = str2double(get(handles.n_value, 'string'));
        [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
        Unif = ((nD+1-I).^2+(nD+1-J).^2)<u*nD;
        Unif(nD+1,nD+1) = 0;
        Dm = Unif./sum(sum(Unif));
    case 'Exponential'
        a = str2double(get(handles.sig_value, 'string'));
        nD = str2double(get(handles.n_value, 'string'));
        [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
        Ex = exp(-a*(abs(nD+1-I)+abs(nD+1-J)));
        Ex(nD+1,nD+1) = 0;
        Dm = Ex./sum(sum(Ex));
    case 'Gaussian'
        sig = str2double(get(handles.sig_value, 'string'));
        nD = str2double(get(handles.n_value, 'string'));
        [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
        Ga   = exp(-((nD+1-I).^2+(nD+1-J).^2)/(2*sig.^2));
        Ga(nD+1,nD+1) = 0;
        Dm = Ga./sum(sum(Ga));
    case 'Gamma'
        theta = str2num(get(handles.theta_value, 'String'));
        [n,m] = size(M);
        k = 1;
        nD = n;
        [I,J] = meshgrid(1:2*nD+1,1:2*nD+1);
        X = [abs(nD+1-J)+abs(nD+1-I)];
        Gm = gampdf(X,k,theta);
        Gm(nD+1,nD+1) = 0;
        Dm = Gm./sum(sum(Gm));
end
il s'agit donc des valeurs Nn u a sig theta.

Voici mon soucis : Quand je change run mon programme avec une valeur de theta par exemple, associé au cas "Gamma" du popupmenu, si ensuite je stop mon programme, je change theta et que je le run de nouveau, le changement de valeur ne va pas être pris en compte. Pour que celui-ci soit pris en compte il faut que je re-sélectionne "Gamma" dans le popupmenu avec que cette option est déjà celle sélectionnée.

J'ai essayé de déplacer à différent endroit la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
theta = str2num(get(handles.theta_value, 'String'));
pour faire en sorte que la valeur soit redéfinie à chaque fois sans avoir à re-sélectionner l'option dans le popupmenu mais sans succès.

Une idée pour corriger ce petit soucis ? J'espère que j'ai réussi à être clair
Merci