source: MML/trunk/machine/SOLEIL/LT1/emittance/show1imagesgui_15.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 34.6 KB
Line 
1function varargout = show1imagesgui_15(varargin)  % EN COURS !!!!!!
2% show1imagesgui_15 M-file for show1imagesgui_15.fig
3%      show1imagesgui_15, by itself, creates a new show1imagesgui_15 or raises the existing
4%      singleton*.
5%
6%      H = show1imagesgui_15 returns the handle to a new show1imagesgui_15 or the handle to
7%      the existing singleton*.
8%
9%      show1imagesgui_15('CALLBACK',hObject,eventData,handles,...) calls the local
10%      function named CALLBACK in show1imagesgui_15.M with the given input arguments.
11%
12%      show1imagesgui_15('Property','Value',...) creates a new show1imagesgui_15 or raises the
13%      existing singleton*.  Starting from the left, property value pairs are
14%      applied to the GUI before show1imagesgui_15_OpeningFunction gets called.  An
15%      unrecognized property name or invalid value makes property application
16%      stop.  All inputs are passed to show1imagesgui_15_OpeningFcn via varargin.
17%
18%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
19%      instance to run (singleton)".
20%
21% See also: GUIDE, GUIDATA, GUIHANDLES
22
23% Edit the above text to modify the response to help show1imagesgui_15
24
25% Last Modified by GUIDE v2.5 11-Oct-2005 18:37:57
26
27% Begin initialization code - DO NOT EDIT
28gui_Singleton = 1;
29gui_State = struct('gui_Name',       mfilename, ...
30                   'gui_Singleton',  gui_Singleton, ...
31                   'gui_OpeningFcn', @show1imagesgui_15_OpeningFcn, ...
32                   'gui_OutputFcn',  @show1imagesgui_15_OutputFcn, ...
33                   'gui_LayoutFcn',  [] , ...
34                   'gui_Callback',   []);
35if nargin & isstr(varargin{1})
36    gui_State.gui_Callback = str2func(varargin{1});
37end
38
39if nargout
40    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
41else
42    gui_mainfcn(gui_State, varargin{:});
43end
44% End initialization code - DO NOT EDIT
45
46
47% --- Executes just before show1imagesgui_15 is made visible.
48function show1imagesgui_15_OpeningFcn(hObject, eventdata, handles, varargin)
49% This function has no output args, see OutputFcn.
50% hObject    handle to figure
51% eventdata  reserved - to be defined in a future version of MATLAB
52% handles    structure with handles and user data (see GUIDATA)
53% varargin   command line arguments to show1imagesgui_15 (see VARARGIN)
54
55% Choose default command line output for show1imagesgui_15
56
57% Choose default command line output for test_1
58handles.output = hObject;
59
60if iscell(varargin) && ~isempty(varargin)
61   
62    % store handle from caller
63    handles.caller = varargin{1}.figure1;
64   
65    % Get nbiterations value from Application-Defined data
66    handles.nbiterations = getappdata(handles.caller, 'nbiterations');
67    handles.nbenregistrs = getappdata(handles.caller, 'nbenregistrs');
68    handles.Q4courant=getappdata(handles.caller,'Q4courant');
69    handles.nbenregistrements = getappdata(handles.caller, 'nbenregistrements');
70    handles.tailles = getappdata(handles.caller, 'tailles');
71    handles.ResultsData = getappdata(handles.caller, 'ResultsData');
72    handles.listbox=findobj(allchild(handles.caller),'Tag','listbox1');
73    handles.remove_pushbutton=findobj(allchild(handles.caller),'Tag','remove_pushbutton'); 
74    handles.plot_pushbutton=findobj(allchild(handles.caller),'Tag','plot_pushbutton');
75    handles.restaurer_pushbutton15=findobj(allchild(handles.caller),'Tag','restaurer_pushbutton15');
76    handles.nbacqu_edit13=findobj(allchild(handles.caller),'Tag','nbacqu_edit13');
77    handles.largeur_option=getappdata(handles.caller, 'largeur_option');
78    handles.vect_colonne_noire=getappdata(handles.caller, 'vect_colonne_noire');
79    handles.vect_ligne_noire=getappdata(handles.caller, 'vect_ligne_noire');
80    handles.G=getappdata(handles.caller, 'G');
81    handles.device_name = getappdata(handles.caller, 'device_name');
82    setappdata(handles.caller,'selection_fenetre_H',num2str(0));
83    setappdata(handles.caller,'selection_fenetre_V',num2str(0));
84    setappdata(handles.caller,'Rabotage',num2str(0));
85    set(handles.rayon_fenetre_H_edit16,'String',num2str(1));
86    set(handles.rayon_fenetre_V_edit17,'String',num2str(1));
87   
88    % button group sur squeeze du vecteur sumcolomn
89% h = uibuttongroup('visible','off','Position',[0.05 .9 .12 .08],...
90%     'Title','Image','TitlePosition','centertop');
91% u1 = uicontrol('Style','Radio','String','ON','Tag','radiobutton1',...
92%     'pos',[2 .9 45 30],'parent',h,'HandleVisibility','off');
93% u2 = uicontrol('Style','Radio','String','OFF','Tag','radiobutton2',...
94%     'pos',[50 .9 45 30],'parent',h,'HandleVisibility','off');
95h = uibuttongroup('visible','off');
96u1 = uicontrol('Style','Radio','String','ON','Tag','radiobutton1',...
97    'pos',[35. 28. 45 30],'parent',h,'HandleVisibility','off');
98u2 = uicontrol('Style','Radio','String','OFF','Tag','radiobutton2',...
99     'pos',[75. 28. 45 30],'parent',h,'HandleVisibility','off');
100set(h,'SelectionChangeFcn',...
101    {@uibuttongroup_SelectionChangeFcn,handles});
102set(h,'SelectedObject',u2);  % No selection
103set(h,'Visible','on');
104
105v = uibuttongroup('visible','off');
106v1 = uicontrol('Style','Radio','String','ON','Tag','radiobutton1',...
107    'pos',[440. 390. 45 30],'parent',v,'HandleVisibility','off');
108v2 = uicontrol('Style','Radio','String','OFF','Tag','radiobutton2',...
109     'pos',[440. 360. 45 30],'parent',v,'HandleVisibility','off');
110set(v,'SelectionChangeFcn',...
111    {@uibuttongroup_SelectionChangeFcn_V,handles});
112set(v,'SelectedObject',v2);  % No selection
113set(v,'Visible','on');
114
115r = uibuttongroup('visible','off');
116r1 = uicontrol('Style','Radio','String','ON','Tag','radiobutton1',...
117    'pos',[400. 28. 45 30],'parent',r,'HandleVisibility','off');
118r2 = uicontrol('Style','Radio','String','OFF','Tag','radiobutton2',...
119     'pos',[440. 28. 45 30],'parent',r,'HandleVisibility','off');
120set(r,'SelectionChangeFcn',...
121    {@uibuttongroup_SelectionChangeFcn_R,handles});
122set(r,'SelectedObject',r2);  % No selection
123set(r,'Visible','on');
124
125
126
127    % Update handles structure
128    guidata(hObject, handles);
129
130else
131   
132end
133
134% Update handles structure
135guidata(hObject, handles);
136
137% UIWAIT makes show1imagesgui_15 wait for user response (see UIRESUME)
138% uiwait(handles.main);
139
140%______________________________________________________________________
141% profil horizontal
142handles.vect_colonne_noire=getappdata(handles.caller, 'vect_colonne_noire');
143
144   
145name=['axes' num2str(1)];
146axes(handles.(name)); %axis image ;
147
148%formation d'une image
149
150    %toto=faisceau(rowmax,columnmax,rowmax/10,columnmax/5,rowmax/2,columnmax/2,20);
151
152device_name = getappdata(handles.caller,'device_name');
153
154%axes1=findobj(allchild(handles.figure1),'Tag','axes1');
155%axes(handles.axes1);
156dev=device_name.videograbber;
157
158toto=tango_read_attribute(dev,'Image');
159%toto=tango_read_attribute(dev,'corrected_image');
160%image(toto.value,'CDataMapping','scaled');
161image(toto.value,'CDataMapping','scaled','Parent',handles.axes1)
162rowmax=size(toto.value,1);
163columnmax=size(toto.value,2);
164
165%imagesc(toto.value,'Parent',handles.axes1);
166colormap(gray);   
167
168% calcul des projections
169sumcolumn=sum(toto.value(:,:));
170%sauvegarde du profil horizontal brut
171setappdata(handles.caller, 'profil_H',sumcolumn);
172
173
174% test si on a bien cree une image dans faisceau
175if isequal(size(sumcolumn),size(handles.vect_colonne_noire))
176    % on soustraie l'image sans faisceau
177%%    sumcolumn=sumcolumn-handles.vect_colonne_noire; % suppression le 07 mai 08 !
178else
179    errordlg('vous n avez pas fait d''image sans faisceau','Error');
180end
181
182% seul souci : les pixels rendus nï¿œgatifs dans l'opï¿œration prï¿œcedente. On
183% les passe sauvagement ᅵ 0 !
184for i=1:length(sumcolumn)
185    if sumcolumn(i)<0
186        sumcolumn(i)=0;
187    end
188end
189
190
191handles.largeur_option=getappdata(handles.caller, 'largeur_option');
192
193% cas oᅵ aucune option de calcul pour la largeur n'a ᅵtᅵ sᅵlectionnᅵ
194if isequal(handles.largeur_option,0)
195    errordlg('vous n avez pas fait votre choix pour la taille de faisceau','Error');
196end
197
198% fit par gaussienne
199if isequal(handles.largeur_option,1)
200   
201    %xdata=1:columnmax+1;
202    xdata=1:columnmax;
203    ValMaxc=max(sumcolumn);ValMinc=min(sumcolumn);
204    x0=[10 250 ValMaxc];
205    % option on enlï¿œve min :
206    %[ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn-ValMinc)
207    % option : on enlï¿œve l'image noire (fait prï¿œcï¿œdemment) :
208    [ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn);
209    rmsH=ac(1);
210    %grossissement= str2num(handles.G);
211    %val=sprintf('%0.2f',rmsH*grossissement);
212    val=sprintf('%0.2f',rmsH*handles.G)
213    % impression du rayon en mm
214    set(handles.rmsH_edit11,'String',val);
215    sumHstd=0;
216
217    %plot du rï¿œsultat
218    %F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)))+ValMinc;
219    F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)));
220    name=['axes' num2str(2)];
221    axes(handles.(name));
222    plot(xdata,sumcolumn,'k-');
223    xlim([0 length(sumcolumn)])
224    hold on
225    plot(xdata,F,'b-')
226    hold off
227
228end
229
230
231% vrai rms
232if isequal(handles.largeur_option,2)
233   
234    ValMaxc=max(sumcolumn);ValMinc=min(sumcolumn);
235    sumcolumn=sumcolumn-ValMinc;
236    vect=1:length(sumcolumn);
237    sumcolumn1=sumcolumn/sum(sumcolumn);
238    smoy=sum(sumcolumn1.*vect);
239    tata=(vect-smoy).*(vect-smoy);
240    srms=sum(sumcolumn1.*tata);
241    rmsH=sqrt(srms);
242   
243    %grossissement= str2num(handles.G);
244    %val=sprintf('%0.2f',rmsH*grossissement);
245   
246    val=sprintf('%0.2f',rmsH*handles.G);
247    % impression du rayon en mm
248    set(handles.rmsH_edit11,'String',val);
249   
250    %plot du rï¿œsultat
251    xdata=1:columnmax;
252    name=['axes' num2str(2)];
253    axes(handles.(name));
254    plot(xdata,sumcolumn+ValMinc,'k-');
255    xlim([0 length(sumcolumn)])
256    hold on
257    %plot(xdata,F,'b-')
258    hold off
259
260end
261
262% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
263% profil vertical
264handles.vect_ligne_noire=getappdata(handles.caller, 'vect_ligne_noire');
265
266   
267name=['axes' num2str(1)];
268axes(handles.(name)); %axis image ;
269
270%     %formation d'une image
271%     rowmax=513;
272%     columnmax=701;
273%     toto=faisceau(rowmax,columnmax,rowmax/10,columnmax/5,rowmax/2,columnmax/2,20);
274% calcul des projections
275sumrow=sum(toto.value(:,:)');
276%sauvegarde du profil horizontal brut
277setappdata(handles.caller, 'profil_V',sumrow);
278
279
280% test si on a bien cree une image dans faisceau 
281if isequal(size(sumrow),size(handles.vect_ligne_noire))
282    % on soustraie l'image sans faisceau
283%%%    sumrow=sumrow-handles.vect_ligne_noire; % suppression le 07 mai 08 !
284else
285    % a priori inutile (alarme dï¿œjï¿œ levï¿œe en horizontal)  errordlg('vous n avez pas fait d image sans faisceau','Error');
286end
287
288% seul souci : les pixels rendus nï¿œgatifs dans l'opï¿œration prï¿œcedente. On
289% les passe sauvagement ᅵ 0 !
290for i=1:length(sumrow)
291    if sumrow(i)<0
292        sumrow(i)=0;
293    end
294end
295
296
297%     handles.largeur_option=getappdata(handles.caller, 'largeur_option');
298
299% fit par gaussienne
300if isequal(handles.largeur_option,1)
301   
302    %xdata=1:rowmax+1;
303    xdata=1:rowmax;
304    ValMaxr=max(sumrow);ValMinr=min(sumrow);
305    x0=[10 250 ValMaxr];
306    % option on enlï¿œve min :
307    %[ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn-ValMinc)
308    % option : on enlï¿œve l'image noire (fait prï¿œcï¿œdemment) :
309    [ar,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumrow);
310    rmsV=ar(1);
311   
312    %grossissement= str2num(handles.G);
313    %val=sprintf('%0.2f',rmsV*grossissement);
314   
315    val=sprintf('%0.2f',rmsV*handles.G);
316    % impression du rayon en mm
317    set(handles.rmsV_edit12,'String',val);
318    sumVstd=0;
319
320    %plot du rï¿œsultat
321    %F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)))+ValMinc;
322    Fr=ar(3)*exp(-(xdata-ar(2)).*(xdata-ar(2))/(2*ar(1)*ar(1)));
323    name=['axes' num2str(3)];
324    axes(handles.(name));
325    plot(xdata,sumrow,'k-');
326    xlim([0 length(sumrow)])
327    hold on
328    plot(xdata,Fr,'b-')
329    hold off
330
331end
332
333
334% vrai rms
335if isequal(handles.largeur_option,2)
336   
337    ValMaxr=max(sumrow);ValMinr=min(sumrow);
338    sumrow=sumrow-ValMinr;
339    vect=1:length(sumrow);
340    sumrow1=sumrow/sum(sumrow);
341    smoy=sum(sumrow1.*vect);
342    toto=(vect-smoy).*(vect-smoy);
343    srms=sum(sumrow1.*toto);
344    rmsV=sqrt(srms);
345   
346    %grossissement= str2num(handles.G);
347    %val=sprintf('%0.2f',rmsV*grossissement);
348   
349    val=sprintf('%0.2f',rmsV*handles.G);
350    % impression du rayon en mm
351    set(handles.rmsV_edit12,'String',val);
352   
353    %plot du rï¿œsultat
354    xdata=1:rowmax;
355    name=['axes' num2str(3)];
356    axes(handles.(name));
357    plot(xdata,sumrow+ValMinr,'k-');
358    xlim([0 length(sumrow)])
359    hold on
360    %plot(xdata,F,'b-')
361    hold off
362
363end
364
365%_______________________________________________________________
366
367%
368%
369%
370%     rowmax=80;
371%     columnmax=100;
372%     B=[];
373%
374%     %for i=1:handles.nbiterations
375%     for i=1:1 
376%         name=['axes' num2str(i)];
377%         axes(handles.(name)); %axis image ; 
378%         faisceau(513,701,120,50,-150,50,10);
379%         B(i,:,:) = rand(rowmax,columnmax);
380%         sumcolumn=sum(squeeze(B(i,:,:)));sumrow=sum(squeeze(B(i,:,:))');
381%         sumV(i)=sum(sumcolumn);sumH(i)=sum(sumrow);
382%     %         axes(handles.(name)); %axis image ;   
383%     %         ima(i)=image(squeeze(B(i,:,:)),'CDataMapping','scaled');
384%     end
385%
386%     sumHmean=mean(sumH);sumVmean=mean(sumV);sumHstd=std(sumH);sumVstd=std(sumV);
387%
388%     set(handles.rmsH_edit11,'String',sumHmean);
389%     sumHstd=0;
390%
391%     set(handles.rmsV_edit12,'String',sumVmean);
392%
393%     sumVstd=0;
394
395% --- Outputs from this function are returned to the command line.
396function varargout = show1imagesgui_15_OutputFcn(hObject, eventdata, handles)
397% varargout  cell array for returning output args (see VARARGOUT);
398% hObject    handle to figure
399% eventdata  reserved - to be defined in a future version of MATLAB
400% handles    structure with handles and user data (see GUIDATA)
401
402% Get default command line output from handles structure
403varargout{1} = handles.output;  % ???
404
405% --- Executes on button press in pushbutton1.
406function recommencer_pushbutton1_Callback(hObject, eventdata, handles)
407% hObject    handle to pushbutton1 (see GCBO)
408% eventdata  reserved - to be defined in a future version of MATLAB
409% handles    structure with handles and user data (see GUIDATA)
410
411handles.vect_colonne_noire=getappdata(handles.caller, 'vect_colonne_noire');
412selection_fenetre_H = getappdata(handles.caller,'selection_fenetre_H');
413selection_fenetre_V = getappdata(handles.caller,'selection_fenetre_V');
414Rabotage = getappdata(handles.caller,'Rabotage')
415
416name=['axes' num2str(1)];
417axes(handles.(name)); %axis image ;
418
419%formation d'une image
420device_name = getappdata(handles.caller,'device_name');
421dev=device_name.videograbber;
422toto=tango_read_attribute(dev,'Image');
423%toto=tango_read_attribute(dev,'corrected_image');
424image(toto.value,'CDataMapping','scaled','Parent',handles.axes1)
425rowmax=size(toto.value,1);
426columnmax=size(toto.value,2);
427colormap(gray);   
428
429% calcul des projections
430sumcolumn=sum(toto.value(:,:));
431%sauvegarde du profil horizontal brut
432setappdata(handles.caller, 'profil_H',sumcolumn);
433
434
435% test si on a bien cree une image dans faisceau
436if isequal(size(sumcolumn),size(handles.vect_colonne_noire))
437    % on soustraie l'image sans faisceau
438    %sumcolumn=sumcolumn-handles.vect_colonne_noire;
439else
440    errordlg('vous n avez pas fait d''image sans faisceau','Error');
441end
442
443% seul souci : les pixels rendus nï¿œgatifs dans l'opï¿œration prï¿œcedente. On
444% les passe sauvagement ᅵ 0 !
445for i=1:length(sumcolumn)
446    if sumcolumn(i)<0
447        sumcolumn(i)=0;
448    end
449end
450
451
452handles.largeur_option=getappdata(handles.caller, 'largeur_option');
453
454% cas oᅵ aucune option de calcul pour la largeur n'a ᅵtᅵ sᅵlectionnᅵ
455if isequal(handles.largeur_option,0)
456    errordlg('vous n avez pas fait votre choix pour la taille de faisceau','Error');
457end
458
459
460% fit par gaussienne
461if isequal(handles.largeur_option,1)
462   
463    xdata=1:columnmax;
464    ValMaxc=max(sumcolumn);ValMinc=min(sumcolumn);
465    x0=[10 250 ValMaxc];
466    % option on enlï¿œve min :
467    %[ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn-ValMinc)
468    % option : on enlï¿œve l'image noire (fait prï¿œcï¿œdemment) :
469    [ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn);
470    rmsH=ac(1);
471   
472    %grossissement= str2num(handles.G);
473    %val=sprintf('%0.2f',rmsH*grossissement);
474   
475    val=sprintf('%0.2f',rmsH*handles.G);
476    % impression du rayon en mm
477    set(handles.rmsH_edit11,'String',val);
478    sumHstd=0;
479
480    %plot du rï¿œsultat
481    %F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)))+ValMinc;
482    F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)));
483    name=['axes' num2str(2)];
484    axes(handles.(name));
485    plot(xdata,sumcolumn,'k-');
486    xlim([0 length(sumcolumn)])
487    hold on
488    plot(xdata,F,'b-')
489    hold off
490
491end
492
493
494% vrai rms
495if isequal(handles.largeur_option,2)
496
497    % test !
498%Z = load('-mat','/home/matlabML/measdata/LT1data/emittance/2005-10-10_4/profilH_2_38.mat');
499%Z = load('-mat','/home/matlabML/measdata/LT1data/emittance/2005-09-23_1/profilH_3_38.mat');
500% Z = load('-mat','/home/matlabML/measdata/LT1data/emittance/2005-10-10_4/profilH_3_38.mat');
501% sumcolumn = Z.vect_H;
502   
503    if isequal(Rabotage,num2str(1))&isequal(selection_fenetre_H,num2str(1))
504        errordlg('Attention deselectionnez une option !! ...','Error');
505    elseif isequal(Rabotage,num2str(1))
506        [Y,I] = max(sumcolumn);
507        sumcolumn = sumcolumn - Y*0.01;
508        for i = 1 : length(sumcolumn)   
509            if sumcolumn(i)<0
510                sumcolumn(i) = 0;
511            end
512        end
513    elseif isequal(selection_fenetre_H,num2str(1))
514         res= get(handles.rayon_fenetre_H_edit16,'String');
515         rayon_fenetre_H = str2num(res);
516         rayon_pixel_H = rayon_fenetre_H/handles.G;
517         [Y,I] = max(sumcolumn);
518         sumcolumn = sumcolumn(I-rayon_pixel_H : I+rayon_pixel_H);
519         %sumcolumn = sumcolumn(640/2-rayon_pixel_H : 640/2+rayon_pixel_H);
520    end
521   
522    ValMaxc=max(sumcolumn);ValMinc=min(sumcolumn);
523    sumcolumn=sumcolumn-ValMinc;
524    vect=1:length(sumcolumn);
525    sumcolumn1=sumcolumn/sum(sumcolumn);
526    smoy=sum(sumcolumn1.*vect);
527    titi=(vect-smoy).*(vect-smoy);
528    srms=sum(sumcolumn1.*titi);
529    rmsH=sqrt(srms);
530   
531    %grossissement= str2num(handles.G);
532    %val=sprintf('%0.2f',rmsH*grossissement);
533   
534    val=sprintf('%0.2f',rmsH*handles.G);
535    % impression du rayon en mm
536    set(handles.rmsH_edit11,'String',val);
537   
538    %plot du rï¿œsultat
539    columnmax=size(sumcolumn,2);
540    xdata=1:columnmax;
541    name=['axes' num2str(2)];
542    axes(handles.(name));
543    plot(xdata,sumcolumn+ValMinc,'k-');
544    xlim([0 length(sumcolumn)])
545    hold on
546    %plot(xdata,F,'b-')
547    hold off
548
549end
550
551% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
552
553handles.vect_ligne_noire=getappdata(handles.caller, 'vect_ligne_noire');
554
555   
556name=['axes' num2str(1)];
557axes(handles.(name)); %axis image ;
558
559%     %formation d'une image
560%     rowmax=513;
561%     columnmax=701;
562%     toto=faisceau(rowmax,columnmax,rowmax/10,columnmax/5,rowmax/2,columnmax/2,20);
563% calcul des projections
564sumrow=sum(toto.value(:,:)');
565%sauvegarde du profil horizontal brut
566setappdata(handles.caller, 'profil_V',sumrow);
567
568
569% test si on a bien cree une image dans faisceau
570if isequal(size(sumrow),size(handles.vect_ligne_noire))
571    % on soustraie l'image sans faisceau
572    %sumrow=sumrow-handles.vect_ligne_noire;
573else
574    errordlg('vous n avez pas fait d image sans faisceau','Error');
575end
576
577% seul souci : les pixels rendus nï¿œgatifs dans l'opï¿œration prï¿œcedente. On
578% les passe sauvagement ᅵ 0 !
579for i=1:length(sumrow)
580    if sumrow(i)<0
581        sumrow(i)=0;
582    end
583end
584
585
586%     handles.largeur_option=getappdata(handles.caller, 'largeur_option');
587
588% fit par gaussienne
589if isequal(handles.largeur_option,1)
590   
591    xdata=1:rowmax;
592    ValMaxr=max(sumrow);ValMinr=min(sumrow);
593    x0=[10 250 ValMaxr];
594    % option on enlï¿œve min :
595    %[ac,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumcolumn-ValMinc)
596    % option : on enlï¿œve l'image noire (fait prï¿œcï¿œdemment) :
597    [ar,resnorm] = lsqcurvefit(@myfun_gaussienne,x0,xdata,sumrow);
598    rmsV=ar(1);
599   
600    %grossissement= str2num(handles.G);
601    %val=sprintf('%0.2f',rmsV*grossissement);
602   
603    val=sprintf('%0.2f',rmsV*handles.G);
604    % impression du rayon en mm
605    set(handles.rmsV_edit12,'String',val);
606    sumVstd=0;
607
608    %plot du rï¿œsultat
609    %F=ac(3)*exp(-(xdata-ac(2)).*(xdata-ac(2))/(2*ac(1)*ac(1)))+ValMinc;
610    Fr=ar(3)*exp(-(xdata-ar(2)).*(xdata-ar(2))/(2*ar(1)*ar(1)));
611    name=['axes' num2str(3)];
612    axes(handles.(name));
613    plot(xdata,sumrow,'k-');
614    xlim([0 length(sumrow)])
615    hold on
616    plot(xdata,Fr,'b-')
617    hold off
618
619end
620
621
622% vrai rms
623if isequal(handles.largeur_option,2)
624
625        % test !
626%ZV = load('-mat','/home/matlabML/measdata/LT1data/emittance/2005-10-10_4/profilV_2_38.mat');
627% ZV = load('-mat','/home/matlabML/measdata/LT1data/emittance/2005-10-10_4/profilV_3_38.mat');
628% sumrow = ZV.vect_V;
629
630    if isequal(Rabotage,num2str(1))&isequal(selection_fenetre_H,num2str(1))
631        errordlg('Attention deselectionnez une option !! ...','Error');
632    elseif isequal(Rabotage,num2str(1))
633        [Y,I] = max(sumrow);
634        sumrow = sumrow - Y*0.01;
635        for i = 1 : length(sumrow)   
636            if sumrow(i)<0
637                sumrow(i) = 0;
638            end
639        end
640    elseif isequal(selection_fenetre_V,num2str(1))
641         res= get(handles.rayon_fenetre_V_edit17,'String');
642         rayon_fenetre_V = str2num(res);
643         rayon_pixel_V = rayon_fenetre_V/handles.G;
644         [Y,I] = max(sumrow)
645         %sumrow = sumrow(480/2-rayon_pixel_V : 480/2+rayon_pixel_V);
646         sumrow = sumrow(I-rayon_pixel_V : I+rayon_pixel_V);
647    end
648   
649   
650    ValMaxr=max(sumrow);ValMinr=min(sumrow);
651    sumrow=sumrow-ValMinr;
652    vect=1:length(sumrow);
653    sumrow1=sumrow/sum(sumrow);
654    smoy=sum(sumrow1.*vect);
655    toto=(vect-smoy).*(vect-smoy);
656    srms=sum(sumrow1.*toto);
657    rmsV=sqrt(srms);
658   
659    %grossissement= str2num(handles.G);
660    %val=sprintf('%0.2f',rmsV*grossissement);
661   
662    val=sprintf('%0.2f',rmsV*handles.G);
663    % impression du rayon en mm
664    set(handles.rmsV_edit12,'String',val);
665   
666    %plot du rï¿œsultat
667    rowmax = length(sumrow);
668    xdata=1:rowmax;
669    name=['axes' num2str(3)];
670    axes(handles.(name));
671    plot(xdata,sumrow+ValMinr,'k-');
672    xlim([0 length(sumrow)])
673    hold on
674    %plot(xdata,F,'b-')
675    hold off
676
677end
678
679
680
681% --------------------------------------------------------------------
682function FileMenu_Callback(hObject, eventdata, handles)
683% hObject    handle to FileMenu (see GCBO)
684% eventdata  reserved - to be defined in a future version of MATLAB
685% handles    structure with handles and user data (see GUIDATA)
686
687
688% --------------------------------------------------------------------
689function OpenMenuItem_Callback(hObject, eventdata, handles)
690% hObject    handle to OpenMenuItem (see GCBO)
691% eventdata  reserved - to be defined in a future version of MATLAB
692% handles    structure with handles and user data (see GUIDATA)
693file = uigetfile('*.fig');
694if ~isequal(file, 0)
695    open(file);
696end
697
698% --------------------------------------------------------------------
699function PrintMenuItem_Callback(hObject, eventdata, handles)
700% hObject    handle to PrintMenuItem (see GCBO)
701% eventdata  reserved - to be defined in a future version of MATLAB
702% handles    structure with handles and user data (see GUIDATA)
703printdlg(handles.figure1)
704
705% --------------------------------------------------------------------
706function CloseMenuItem_Callback(hObject, eventdata, handles)
707% hObject    handle to CloseMenuItem (see GCBO)
708% eventdata  reserved - to be defined in a future version of MATLAB
709% handles    structure with handles and user data (see GUIDATA)
710selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...
711                     ['Close ' get(handles.figure1,'Name') '...'],...
712                     'Yes','No','Yes');
713if strcmp(selection,'No')
714    return;
715end
716
717delete(handles.figure1)
718
719
720% --- Executes during object creation, after setting all properties.
721function rmsH_edit11_CreateFcn(hObject, eventdata, handles)
722% hObject    handle to rmsH_edit11 (see GCBO)
723% eventdata  reserved - to be defined in a future version of MATLAB
724% handles    empty - handles not created until after all CreateFcns called
725
726% Hint: edit controls usually have a white background on Windows.
727%       See ISPC and COMPUTER.
728if ispc
729    set(hObject,'BackgroundColor','white');
730else
731    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
732end
733
734
735
736function rmsH_edit11_Callback(hObject, eventdata, handles)
737% hObject    handle to rmsH_edit11 (see GCBO)
738% eventdata  reserved - to be defined in a future version of MATLAB
739% handles    structure with handles and user data (see GUIDATA)
740
741% Hints: get(hObject,'String') returns contents of rmsH_edit11 as text
742%        str2double(get(hObject,'String')) returns contents of rmsH_edit11 as a double
743
744
745% --- Executes during object creation, after setting all properties.
746function rmsV_edit12_CreateFcn(hObject, eventdata, handles)
747% hObject    handle to rmsV_edit12 (see GCBO)
748% eventdata  reserved - to be defined in a future version of MATLAB
749% handles    empty - handles not created until after all CreateFcns called
750
751% Hint: edit controls usually have a white background on Windows.
752%       See ISPC and COMPUTER.
753if ispc
754    set(hObject,'BackgroundColor','white');
755else
756    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
757end
758
759
760
761function rmsV_edit12_Callback(hObject, eventdata, handles)
762% hObject    handle to rmsV_edit12 (see GCBO)
763% eventdata  reserved - to be defined in a future version of MATLAB
764% handles    structure with handles and user data (see GUIDATA)
765
766% Hints: get(hObject,'String') returns contents of rmsV_edit12 as text
767%        str2double(get(hObject,'String')) returns contents of rmsV_edit12 as a double
768
769
770% ------------------------------------------------------------
771% Callback for the Store push button
772% ------------------------------------------------------------
773% --- Executes on button press in enregistrer_pushbutton.
774function enregistrer_pushbutton_Callback(hObject, eventdata, handles)
775% hObject    handle to enregistrer_pushbutton (see GCBO)
776% eventdata  reserved - to be defined in a future version of MATLAB
777% handles    structure with handles and user data (see GUIDATA)
778
779
780%handles.nbenregistrs=handles.nbenregistrs + 1;
781
782LargH=str2num(get(handles.rmsH_edit11,'String'));
783LargV=str2num(get(handles.rmsV_edit12,'String'));
784%%sigH=str2num(get(handles.edit13,'String'));
785%%sigV=str2num(get(handles.edit14,'String'));
786sigH=0;
787sigV=0;
788
789
790%handles.tailles=[ handles.tailles ; LargH sigH LargV sigV ]
791handles.tailles=[  LargH sigH LargV sigV ];
792setappdata(handles.caller,'tailles',handles.tailles);
793
794guidata(hObject, handles);
795
796% Retrieve old results data structure
797handles.ResultsData = getappdata(handles.caller,'ResultsData');
798%handles.nbenregistrements
799if isfield(handles,'ResultsData') & ~isempty(handles.ResultsData)
800        ResultsData = handles.ResultsData;
801        % Determine the maximum run number currently used.
802        maxNum = ResultsData(length(ResultsData)).RunNumber;
803        ResultNum = maxNum+1;
804    ik =length(ResultsData);
805else, % Set up the results data structure
806%    ResultsData = struct('nbenregistrs',[],'LargeurH',[],...
807    ResultsData = struct('RunName',[],'RunNumber',[],'LargeurH',[],...
808        'sigmaH',[],'LargeurV',[],...
809                'sigmaV',[],'Q4courant',[],...
810        'G',[],'option_L',[],'date','');
811        ResultNum = 1;
812    ik = 0;
813end
814
815if isequal(ResultNum,1),
816        %--Enable the Plot and Remove buttons
817        set([handles.remove_pushbutton,handles.plot_pushbutton,...
818        handles.restaurer_pushbutton15],'Enable','on') ;
819%     %ouvrir le dossier pour l'enregistrement des profils
820%    prompt={'entrer un nom de rï¿œpertoire'};
821%    name='SAUVEGARDE DES PROFILS';
822%    numlines=1;
823%    defaultanswer={'JJMMAA_n1'};
824%    options.Resize='on';
825%    options.WindowStyle='normal';
826%    options.Interpreter='tex';
827%    val=0;
828%     while isequal(val,0)
829%     directory=inputdlg(prompt,name,numlines,defaultanswer,options);
830%         if ~isequal(directory,{})
831%             if ~isdir(strcat('/home/PM/tordeux/matlab_test/',directory{:}))
832%                 mkdir /home/PM/tordeux/matlab_test/directory;
833%                 val=1;
834%             else   
835%                 button = questdlg('ce dossier existe ! voulez-vous continuer?','ATTENTION','oui','non','non') ;
836%                 if isequal(button,'oui')
837%                     val=1;
838%                 end
839%             end     
840%         else
841%             %avoir deja creï¿œ une directory de secours pour si on a fait "cancel"..
842%             directory={'secours'};
843%             val=1;
844%         end
845%     end
846%    chemin=strcat('/home/PM/tordeux/matlab_test/',directory{:});
847%    cd(chemin);
848end
849
850w=getappdata(handles.caller,'tailles');
851handles.Q4courant=getappdata(handles.caller,'Q4courant');
852handles.G=getappdata(handles.caller,'G');
853handles.largeur_option=getappdata(handles.caller, 'largeur_option');
854moment=datestr(now);
855
856ik = ik + 1;
857ResultsData(ik).RunName = ['Point ',num2str(ResultNum)];
858ResultsData(ik).RunNumber = ResultNum;
859ResultsData(ik).LargeurH = w(1);
860ResultsData(ik).sigmaH = w(2);
861ResultsData(ik).LargeurV = w(3);
862ResultsData(ik).sigmaV = w(4);
863ResultsData(ik).Q4courant = handles.Q4courant;
864ResultsData(ik).G =handles.G;
865ResultsData(ik).option_L =handles.largeur_option;
866ResultsData(ik).date=moment;
867
868% Build the new results list string for the listbox
869ResultsStr = get(handles.listbox,'String');
870Qcour=handles.Q4courant;
871i1=sprintf(' %9.2f \n',Qcour);
872i2=sprintf(' %9.2f \n',w(1));
873i3=sprintf(' %9.2f \n',w(2));
874i4=sprintf(' %9.2f \n',w(3));
875i5=sprintf(' %9.2f \n',w(4));
876i6=sprintf(' %9.3f \n',handles.G);
877i7=sprintf(' %4.0f \n',handles.largeur_option);
878
879
880if isequal(ResultNum,1)
881        ResultsStr = {['Point 1',...
882        i1,i2,i3,i4,i5,i6,i7,'  ',moment]};
883%         num2str(Qcour),'     ',num2str(w(1)),'     ',num2str(w(2)),...
884%         '    ',num2str(w(3)),'     ',num2str(w(4)),...
885%         '     ',num2str(handles.G),'     ',num2str(handles.largeur_option),'     ',moment...
886%         ]};
887else
888       
889    ResultsStr = [ResultsStr; {['Point ',num2str(ResultNum),...
890        i1,i2,i3,i4,i5,i6,i7,'  ',moment]}];
891end
892set(handles.listbox,'String',ResultsStr);
893set(handles.listbox,'Value',size(ResultsStr,1));
894
895
896% Store the new ResultsData
897handles.ResultsData = ResultsData;
898setappdata(handles.caller,'ResultsData',ResultsData);
899set(handles.nbacqu_edit13,'String', num2str(size(ResultsStr,1)));
900
901
902guidata(hObject, handles);
903
904
905% Enregistrer sur machine locale
906G=getappdata(handles.caller,'G');
907vect_H=getappdata(handles.caller, 'profil_H');
908Name=strcat('profilH_',num2str(ResultNum),'_',num2str(handles.G*1000));
909save(Name,'moment', 'G','vect_H') ;
910
911vect_V=getappdata(handles.caller, 'profil_V');
912Name=strcat('profilV_',num2str(ResultNum),'_',num2str(handles.G*1000));
913save(Name,'moment', 'G','vect_V') ;
914
915%eval(['save ',strcat('profilH_',num2str(ResultNum)),  moment vect_H]) ;
916
917%function pushbutton2_Callback(hObject, eventdata, handles)
918%% NE FAIT RIEN
919
920
921
922function rayon_fenetre_H_edit16_Callback(hObject, eventdata, handles)
923% hObject    handle to rayon_fenetre_H_edit16 (see GCBO)
924% eventdata  reserved - to be defined in a future version of MATLAB
925% handles    structure with handles and user data (see GUIDATA)
926
927% Hints: get(hObject,'String') returns contents of rayon_fenetre_H_edit16 as text
928%        str2double(get(hObject,'String')) returns contents of rayon_fenetre_H_edit16 as a double
929
930
931% --- Executes during object creation, after setting all properties.
932function rayon_fenetre_H_edit16_CreateFcn(hObject, eventdata, handles)
933% hObject    handle to rayon_fenetre_H_edit16 (see GCBO)
934% eventdata  reserved - to be defined in a future version of MATLAB
935% handles    empty - handles not created until after all CreateFcns called
936
937% Hint: edit controls usually have a white background on Windows.
938%       See ISPC and COMPUTER.
939if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
940    set(hObject,'BackgroundColor','white');
941end
942
943
944
945function rayon_fenetre_V_edit17_Callback(hObject, eventdata, handles)
946% hObject    handle to rayon_fenetre_V_edit17 (see GCBO)
947% eventdata  reserved - to be defined in a future version of MATLAB
948% handles    structure with handles and user data (see GUIDATA)
949
950% Hints: get(hObject,'String') returns contents of rayon_fenetre_V_edit17 as text
951%        str2double(get(hObject,'String')) returns contents of rayon_fenetre_V_edit17 as a double
952
953
954% --- Executes during object creation, after setting all properties.
955function rayon_fenetre_V_edit17_CreateFcn(hObject, eventdata, handles)
956% hObject    handle to rayon_fenetre_V_edit17 (see GCBO)
957% eventdata  reserved - to be defined in a future version of MATLAB
958% handles    empty - handles not created until after all CreateFcns called
959
960% Hint: edit controls usually have a white background on Windows.
961%       See ISPC and COMPUTER.
962if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
963    set(hObject,'BackgroundColor','white');
964end
965
966function uibuttongroup_SelectionChangeFcn(hObject,eventdata,handles)
967% hObject    handle to uipanel1 (see GCBO)
968% eventdata  reserved - to be defined in a future version of MATLAB
969% handles    structure with handles and user data (see GUIDATA)
970
971switch get(get(hObject,'SelectedObject'),'Tag')  % Get Tag of selected object
972    case 'radiobutton1'
973        % code piece when radiobutton1 is selected goes here
974        disp('selection d''une fenetre <-')
975        setappdata(handles.caller,'selection_fenetre_H',num2str(1));
976    case 'radiobutton2'
977        % code piece when radiobutton2 is selected goes here
978        disp('arret selection de fenetre ->')
979        setappdata(handles.caller,'selection_fenetre_H',num2str(0));
980end
981
982function uibuttongroup_SelectionChangeFcn_V(hObject,eventdata,handles)
983% hObject    handle to uipanel1 (see GCBO)
984% eventdata  reserved - to be defined in a future version of MATLAB
985% handles    structure with handles and user data (see GUIDATA)
986
987switch get(get(hObject,'SelectedObject'),'Tag')  % Get Tag of selected object
988    case 'radiobutton1'
989        % code piece when radiobutton1 is selected goes here
990        disp('selection d''une fenetre <-')
991        setappdata(handles.caller,'selection_fenetre_V',num2str(1));
992    case 'radiobutton2'
993        % code piece when radiobutton2 is selected goes here
994        disp('arret selection de fenetre ->')
995        setappdata(handles.caller,'selection_fenetre_V',num2str(0));
996end
997
998
999function uibuttongroup_SelectionChangeFcn_R(hObject,eventdata,handles)
1000% hObject    handle to uipanel1 (see GCBO)
1001% eventdata  reserved - to be defined in a future version of MATLAB
1002% handles    structure with handles and user data (see GUIDATA)
1003
1004switch get(get(hObject,'SelectedObject'),'Tag')  % Get Tag of selected object
1005    case 'radiobutton1'
1006        % code piece when radiobutton1 is selected goes here
1007        disp('Rabotage à 1% <-')
1008        setappdata(handles.caller,'Rabotage',num2str(1));
1009    case 'radiobutton2'
1010        % code piece when radiobutton2 is selected goes here
1011        disp('Rabotage à 1% ->')
1012        setappdata(handles.caller,'Rabotage',num2str(0));
1013end
Note: See TracBrowser for help on using the repository browser.