Bonjour,
Je suis sur un programme pour traiter des données à l'aide de matlab.
Le programme marche de la façon suivante :
- je vais chercher le fichier de mon signal (un fichier csv d'oscilloscope correspondant à un signal de pression)
- je lance ma fonction me permettant d'effectuer un zoom et de récupérer le xmin et le xmax de ce zoom
La fonction s’exécute de la façon suivante :
- je crée une figure avec mon signal,
- j'affiche mes boutons pour interagir avec le signal
- j'entre dans la boite de dialogue mon xmin et xmax puis je l’exécute
- une fois satisfait je ferme la figure et continue mon programme en sauvegardant le xmin et le xmax du zoom.
Mon problème est là une fois de retour sur le programme qui a exécuté la fonction je ne garde pas le xmin et la xmax dans le workspace. J'ai les valeur lors du premier affichage de la courbe.
Il est difficile de faire une explication très claire, c'est pourquoi j'ai ajouté le programme et la fonction à la fin de l'explication.
Merci,
Voici le programme:
Voici la fonction:
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 %% Initialisation, allocation & variables clear all; close all format long; clc; pas = 1000; %% Ouverture du fichier [FileName,PathName,FilterIndex] = uigetfile('*csv'); M = dlmread([PathName,FileName], ',', 7, 3); [l,c] = size(M); display(sprintf('%s\n%s\n','Fichier csv de pression: ',FileName)); temps = M(:,1); pbrut = M(:,2); moyenne = mean(pbrut(1:pas)); pcorr = pbrut - moyenne; %% Borne [xmin, xmax] = GUI_borne(temps,pcorr);
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 function [xmin, xmax] = GUI_borne(temps,pcorr,data, info) f = figure('Visible','off',... 'MenuBar','none',... 'Position',[0, 0, 1200, 800]); movegui('center'); plot(temps,pcorr); xlabel('Temps (s)','fontsize',12,'fontweight','b'); ylabel('Pression absolue (bar)','fontsize',12,'fontweight','b'); axis_value = axis; xmin = axis_value(1); xmax = axis_value(2); uicontrol('Style', 'text',... 'String', 'X min :',... 'Position', [10 110 80 20]); uicontrol('Style', 'edit',... 'Tag','xmin',... 'String', xmin,... 'Position', [10 90 80 20]); uicontrol('Style', 'text',... 'String', 'X max :',... 'Position', [10 70 80 20]); uicontrol('Style', 'edit',... 'Tag','xmax',... 'String', xmax,... 'Position', [10 50 80 20]); uicontrol('Style', 'pushbutton',... 'String', 'Actualiser',... 'Tag','actualiser',... 'Position', [10 30 80 20],... 'Callback',@pushbutton_Callback); uicontrol('Style', 'pushbutton',... 'String', 'OK',... 'Tag','ok',... 'Position', [10 10 80 20],... 'Callback',@pushbutton_Callback); set(f,'Visible','on'); function [xmin, xmax] = pushbutton_Callback(data, info) switch (true) case (strcmp(get(gcbo,'Tag'),'actualiser')) xmin = str2double(get(findobj(f,'Tag','xmin'),'String')); xmax = str2double(get(findobj(f,'Tag','xmax'),'String')); axis_value = axis; axis_value(1) = xmin; axis_value(2) = xmax; axis([axis_value(1) axis_value(2) axis_value(3) axis_value(4)]) case (strcmp(get(gcbo,'Tag'),'ok')) axis_value = axis; axis_value(1) = xmin; axis_value(2) = xmax; close(f); end end end
Partager