Bonjour,
je suis en train de développer une interface graphique avec MATLAB GUIDE afin de visualiser des données enregistrées sur un graphique. Le but est de sélectionner les capteurs dont on souhaite afficher les données et aussi le pas de temps sur lequel on veut visualiser ces données. Voici à quoi ressemble mon interface:
Je commence par initialiser mes variables et les enregistrer comme suit:
J'utilise les fonctions sin et cos uniquement dans le but de tester l'interface car en parallèle je n'ai pas encore fini de traiter les données des capteurs. En cochant ou décochant les capteurs, j'arrive à afficher ou pas la courbe correspondante sur l'axe. Voici le code que j'ai utilisé (trouvé dans un post sur ce forum) pour ce faire:
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 % Données natives à plotter t = 0:0.01:1; sinx = sin(2*pi()*t); cosx = cos(2*pi()*t); demi_sinx = 0.5*sin(2*pi()*t); handles.time = t; handles.sin = sinx; handles.cos = cosx; handles.demi_sin = demi_sinx; % Choose default command line output for test handles.output = hObject; % Update handles structure guidata(hObject, handles);
Et enfin je gère le popup menu qui me sert à régler la durée de visualisation de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 hplot1 = get(hObject,'UserData'); if isempty(hplot1) hplot1 = plot(handles.time, handles.sin, 'r'); set(hObject,'UserData',hplot1); else if strcmp(get(hplot1,'Visible'),'on'), set(hplot1,'Visible','off') else set(hplot1,'Visible','on') end end
Mon principal problème est que malgré le guidata, les données ne sont pas actualisées dans l'axe... lorsque je coche ou décoche les capteurs, cela affiche les courbes mais la durée est toujours de 1sec, celle initialisée au début du programme. J'ai aussi affiché les variables handles.sin, handles.cos, handles.time etc et elles ont été correctement modifiées par la sélection d'une valeur dans le popup menu. je suppose que j'ai oublié quelque chose mais je ne sais pas quoi :p. Si vous pouviez m'éclairer à ce sujet, ça m'aiderai beaucoup!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 val = get(hObject,'Value'); str = get(hObject,'String'); switch str{val} case '1sec' handles.time = 0:0.01:1; case '2sec' handles.time = 0:0.01:2; case '3sec' handles.time = 0:0.01:3; end handles.sin = sin(2*pi()*handles.time); handles.cos = cos(2*pi()*handles.time); handles.demi_sin = 0.5*sin(2*pi()*handles.time); guidata(hObject,handles);
Merci par Avance,
Adrien
NB: je viens à peine de me lancer dans les interfaces graphiques avec MATLAB et je cherche par ci par là des tutoriels sur la création d'interfaces graphiques mais je n'ai pas trouvé grand chose jusque là... si vous avez aussi des liens vers des tutoriels très complets (pas juste un exemple comme dans la demo de MatLab ^^), je suis aussi preneur!
Partager