1 | function varargout = Noise_source_GUI(varargin) |
---|
2 | % NOISE_SOURCE_GUI M-file for Noise_source_GUI.fig |
---|
3 | % NOISE_SOURCE_GUI, by itself, creates a new NOISE_SOURCE_GUI or raises the existing |
---|
4 | % singleton*. |
---|
5 | % |
---|
6 | % H = NOISE_SOURCE_GUI returns the handle to a new NOISE_SOURCE_GUI or the handle to |
---|
7 | % the existing singleton*. |
---|
8 | % |
---|
9 | % NOISE_SOURCE_GUI('CALLBACK',hObject,eventData,handles,...) calls the local |
---|
10 | % function named CALLBACK in NOISE_SOURCE_GUI.M with the given input arguments. |
---|
11 | % |
---|
12 | % NOISE_SOURCE_GUI('Property','Value',...) creates a new NOISE_SOURCE_GUI or raises the |
---|
13 | % existing singleton*. Starting from the left, property value pairs are |
---|
14 | % applied to the GUI before Noise_source_GUI_OpeningFunction gets called. An |
---|
15 | % unrecognized property name or invalid value makes property application |
---|
16 | % stop. All inputs are passed to Noise_source_GUI_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 Noise_source_GUI |
---|
24 | |
---|
25 | % Last Modified by GUIDE v2.5 20-Feb-2012 11:05:38 |
---|
26 | |
---|
27 | % Begin initialization code - DO NOT EDIT |
---|
28 | gui_Singleton = 1; |
---|
29 | gui_State = struct('gui_Name', mfilename, ... |
---|
30 | 'gui_Singleton', gui_Singleton, ... |
---|
31 | 'gui_OpeningFcn', @Noise_source_GUI_OpeningFcn, ... |
---|
32 | 'gui_OutputFcn', @Noise_source_GUI_OutputFcn, ... |
---|
33 | 'gui_LayoutFcn', [] , ... |
---|
34 | 'gui_Callback', []); |
---|
35 | if nargin && ischar(varargin{1}) |
---|
36 | gui_State.gui_Callback = str2func(varargin{1}); |
---|
37 | end |
---|
38 | |
---|
39 | if nargout |
---|
40 | [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); |
---|
41 | else |
---|
42 | gui_mainfcn(gui_State, varargin{:}); |
---|
43 | end |
---|
44 | % End initialization code - DO NOT EDIT |
---|
45 | |
---|
46 | |
---|
47 | % --- Executes just before Noise_source_GUI is made visible. |
---|
48 | function Noise_source_GUI_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 Noise_source_GUI (see VARARGIN) |
---|
54 | |
---|
55 | % Choose default command line output for Noise_source_GUI |
---|
56 | handles.output = hObject; |
---|
57 | |
---|
58 | % Update handles structure |
---|
59 | guidata(hObject, handles); |
---|
60 | |
---|
61 | |
---|
62 | % UIWAIT makes Noise_source_GUI wait for user response (see UIRESUME) |
---|
63 | % uiwait(handles.figure1); |
---|
64 | |
---|
65 | |
---|
66 | % --- Outputs from this function are returned to the command line. |
---|
67 | function varargout = Noise_source_GUI_OutputFcn(hObject, eventdata, handles) |
---|
68 | % varargout cell array for returning output args (see VARARGOUT); |
---|
69 | % hObject handle to figure |
---|
70 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
71 | % handles structure with handles and user data (see GUIDATA) |
---|
72 | |
---|
73 | % Get default command line output from handles structure |
---|
74 | varargout{1} = handles.output; |
---|
75 | |
---|
76 | |
---|
77 | % --- Executes on selection change in frequency_list. |
---|
78 | function frequency_list_Callback(hObject, eventdata, handles) |
---|
79 | % hObject handle to frequency_list (see GCBO) |
---|
80 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
81 | % handles structure with handles and user data (see GUIDATA) |
---|
82 | |
---|
83 | % Hints: contents = get(hObject,'String') returns frequency_list contents as cell array |
---|
84 | % contents{get(hObject,'Value')} returns selected item from frequency_list |
---|
85 | |
---|
86 | h2=waitbar(0,'please wait...'); |
---|
87 | |
---|
88 | FHCORspos = getspos('FHCOR',family2dev('FHCOR')); |
---|
89 | FVCORspos = getspos('FVCOR',family2dev('FVCOR')); |
---|
90 | HCORspos = getspos('HCOR',family2dev('HCOR')); |
---|
91 | VCORspos = getspos('VCOR',family2dev('VCOR')); |
---|
92 | BPMspos = getspos('BPMx',family2dev('BPMx')); |
---|
93 | BPM_list=dev2tangodev('BPMx',family2dev('BPMx')); |
---|
94 | Nbpm=size(BPM_list,1); |
---|
95 | RF=1; |
---|
96 | |
---|
97 | selection=get(handles.frequency_list,'value') |
---|
98 | |
---|
99 | is_frequency_domain=get(handles.frequency_domain,'value'); |
---|
100 | |
---|
101 | if is_frequency_domain |
---|
102 | |
---|
103 | xfftamp=getappdata(handles.figure1,'xfftamp'); |
---|
104 | xfftphase=getappdata(handles.figure1,'xfftphase'); |
---|
105 | zfftamp=getappdata(handles.figure1,'zfftamp'); |
---|
106 | zfftphase=getappdata(handles.figure1,'zfftphase'); |
---|
107 | f_bpm=getappdata(handles.figure1,'f_bpm'); |
---|
108 | mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp'); |
---|
109 | mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp'); |
---|
110 | orbitX=xfftamp(:,selection).*sign(xfftphase(:,selection)); |
---|
111 | orbitZ=zfftamp(:,selection).*sign(zfftphase(:,selection)); |
---|
112 | else |
---|
113 | bufferX=getappdata(handles.figure1,'bufferX'); |
---|
114 | bufferZ=getappdata(handles.figure1,'bufferZ'); |
---|
115 | orbitX=bufferX(:,selection); |
---|
116 | orbitZ=bufferZ(:,selection); |
---|
117 | |
---|
118 | end |
---|
119 | |
---|
120 | waitbar(1/5,h2); |
---|
121 | [strengthX_slow,slow_corr_orbit_x,idx_sx,efficiency_sx]=mosteffectivecorrector2(orbitX,'HCOR',RF); |
---|
122 | waitbar(2/5,h2); |
---|
123 | [strengthZ_slow,slow_corr_orbit_z,idx_sz,efficiency_sz]=mosteffectivecorrector2(orbitZ,'VCOR',RF); |
---|
124 | waitbar(3/5,h2); |
---|
125 | [strengthX_fast,fast_corr_orbit_x,idx_fx,efficiency_fx]=mosteffectivecorrector2(orbitX,'FHCOR',RF); |
---|
126 | waitbar(4/5,h2); |
---|
127 | [strengthZ_fast,fast_corr_orbit_z,idx_fz,efficiency_fz]=mosteffectivecorrector2(orbitZ,'FVCOR',RF); |
---|
128 | waitbar(5/5,h2); |
---|
129 | |
---|
130 | max_fast_X=max(abs(strengthX_fast)); |
---|
131 | max_fast_Z=max(abs(strengthZ_fast)); |
---|
132 | %max_fast=max(max_fast_X,max_fast_Z); |
---|
133 | max_slow_X=max(abs(strengthX_slow)); |
---|
134 | max_slow_Z=max(abs(strengthZ_slow)); |
---|
135 | %max_slow=max(max_slow_X,max_slow_Z); |
---|
136 | |
---|
137 | |
---|
138 | strengthX_slow=strengthX_slow./max_slow_X; |
---|
139 | strengthZ_slow=strengthZ_slow./max_slow_Z; |
---|
140 | strengthX_fast=strengthX_fast./max_fast_X; |
---|
141 | strengthZ_fast=strengthZ_fast./max_fast_Z; |
---|
142 | |
---|
143 | |
---|
144 | plot(handles.Xorbit,BPMspos,orbitX,'k','Linewidth',2) |
---|
145 | set(handles.Xorbit,'XGrid','on','YGrid','on'); |
---|
146 | hold(handles.Xorbit,'on') |
---|
147 | plot(handles.Xorbit,BPMspos,slow_corr_orbit_x,'b') |
---|
148 | plot(handles.Xorbit,BPMspos,fast_corr_orbit_x,'r') |
---|
149 | hold(handles.Xorbit,'off') |
---|
150 | xlabel(handles.Xorbit,'position (meters)','fontsize',8,'fontangle','italic') |
---|
151 | title(handles.Xorbit,'Horizontal orbit at selected frequency','FontWeight','Bold'); |
---|
152 | legend2=['HCOR [',num2str(idx_sx),']']; |
---|
153 | legend3=['FHCOR [',num2str(idx_fx),']']; |
---|
154 | legend(handles.Xorbit,'Xorbit',legend2,legend3); |
---|
155 | |
---|
156 | disp_corr_strength=get(handles.strength,'value'); |
---|
157 | disp_orbit_reduction=get(handles.orbit_reduction,'value'); |
---|
158 | |
---|
159 | if disp_orbit_reduction |
---|
160 | bar(handles.HCOR,HCORspos,efficiency_sx(1:size(efficiency_sx,2)-1),1,'b') |
---|
161 | hold(handles.HCOR,'on') |
---|
162 | bar(handles.HCOR,FHCORspos,efficiency_fx(1:size(efficiency_fx,2)-1),0.6,'r') |
---|
163 | hold(handles.HCOR,'off') |
---|
164 | ylim(handles.HCOR,[0 100]); |
---|
165 | title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold'); |
---|
166 | set(handles.HCOR,'XGrid','on','YGrid','on'); |
---|
167 | xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
168 | text2=['FHCOR [',num2str(idx_fx),']']; |
---|
169 | text1=['HCOR [',num2str(idx_sx),']']; |
---|
170 | legend(handles.HCOR,text1,text2); |
---|
171 | |
---|
172 | bar(handles.RFCOR,1,efficiency_sx(size(efficiency_sx,2)),'g') |
---|
173 | ylim(handles.RFCOR,[0 100]); |
---|
174 | xlim(handles.RFCOR,[0 2]); |
---|
175 | set(handles.RFCOR,'XGrid','on','YGrid','on'); |
---|
176 | legend(handles.RFCOR,'RF'); |
---|
177 | |
---|
178 | bar(handles.VCOR,VCORspos,efficiency_sz,1,'b') |
---|
179 | set(handles.VCOR,'XGrid','on','YGrid','on'); |
---|
180 | hold(handles.VCOR,'on') |
---|
181 | bar(handles.VCOR,FVCORspos,efficiency_fz,0.6,'r') |
---|
182 | hold(handles.VCOR,'off') |
---|
183 | ylim(handles.VCOR,[0 100]); |
---|
184 | xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
185 | title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold'); |
---|
186 | legend2=['FVCOR [',num2str(idx_fz),']']; |
---|
187 | legend1=['VCOR [',num2str(idx_sz),']']; |
---|
188 | legend(handles.VCOR,legend1,legend2); |
---|
189 | |
---|
190 | else if disp_corr_strength |
---|
191 | bar(handles.HCOR,HCORspos,strengthX_slow(1:size(strengthX_slow,1)-1),1,'b') |
---|
192 | hold(handles.HCOR,'on') |
---|
193 | bar(handles.HCOR,FHCORspos,strengthX_fast(1:size(strengthX_fast,1)-1),0.6,'r') |
---|
194 | hold(handles.HCOR,'off') |
---|
195 | ylim(handles.HCOR,[-1 1]); |
---|
196 | title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold'); |
---|
197 | set(handles.HCOR,'XGrid','on','YGrid','on'); |
---|
198 | xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
199 | text2=['FHCOR [',num2str(idx_fx),']']; |
---|
200 | text1=['HCOR [',num2str(idx_sx),']']; |
---|
201 | legend(handles.HCOR,text1,text2); |
---|
202 | |
---|
203 | bar(handles.RFCOR,1,strengthX_slow(size(strengthX_slow,2)),'g') |
---|
204 | ylim(handles.RFCOR,[-1 1]); |
---|
205 | xlim(handles.RFCOR,[0 2]); |
---|
206 | set(handles.RFCOR,'XGrid','on','YGrid','on'); |
---|
207 | legend(handles.RFCOR,'RF'); |
---|
208 | |
---|
209 | bar(handles.VCOR,VCORspos,strengthZ_slow,1,'b') |
---|
210 | set(handles.VCOR,'XGrid','on','YGrid','on'); |
---|
211 | hold(handles.VCOR,'on') |
---|
212 | bar(handles.VCOR,FVCORspos,strengthZ_fast,0.6,'r') |
---|
213 | hold(handles.VCOR,'off') |
---|
214 | ylim(handles.VCOR,[-1 1]); |
---|
215 | xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
216 | title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold'); |
---|
217 | legend2=['FVCOR [',num2str(idx_fz),']']; |
---|
218 | legend1=['VCOR [',num2str(idx_sz),']']; |
---|
219 | legend(handles.VCOR,legend1,legend2); |
---|
220 | |
---|
221 | end |
---|
222 | |
---|
223 | end |
---|
224 | |
---|
225 | |
---|
226 | plot(handles.Zorbit,BPMspos,orbitZ,'k','Linewidth',2) |
---|
227 | set(handles.Zorbit,'XGrid','on','YGrid','on'); |
---|
228 | hold(handles.Zorbit,'on') |
---|
229 | plot(handles.Zorbit,BPMspos,slow_corr_orbit_z,'b') |
---|
230 | plot(handles.Zorbit,BPMspos,fast_corr_orbit_z,'r') |
---|
231 | hold(handles.Zorbit,'off') |
---|
232 | xlabel(handles.Zorbit,'position (meters)','fontsize',8,'fontangle','italic') |
---|
233 | title(handles.Zorbit,'Vertical orbit at selected frequency','FontWeight','Bold'); |
---|
234 | legend2=['VCOR [',num2str(idx_sz),']']; |
---|
235 | legend3=['FVCOR [',num2str(idx_fz),']']; |
---|
236 | legend(handles.Zorbit,'Zorbit',legend2,legend3); |
---|
237 | |
---|
238 | |
---|
239 | |
---|
240 | x_scale=get(handles.spectrum,'xlim'); |
---|
241 | |
---|
242 | if is_frequency_domain |
---|
243 | semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r'); |
---|
244 | hold(handles.spectrum,'on'); |
---|
245 | semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:))); |
---|
246 | xlim(handles.spectrum,x_scale); |
---|
247 | %ylim(handles.spectrum,[10^-3 10^1]); |
---|
248 | xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic') |
---|
249 | %ylabel(handles.spectrum,'µm/sqrt(Hz)') |
---|
250 | title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold'); |
---|
251 | legend(handles.spectrum,'plan H','plan V'); |
---|
252 | set(handles.spectrum,'XGrid','on','YGrid','on'); |
---|
253 | plot(handles.spectrum,f_bpm(selection),mean_xfftamp(selection),'ro','LineWidth',3,'MarkerSize',10) |
---|
254 | plot(handles.spectrum,f_bpm(selection),mean_zfftamp(selection),'bo','LineWidth',3,'MarkerSize',10) |
---|
255 | hold(handles.spectrum,'off'); |
---|
256 | |
---|
257 | end |
---|
258 | |
---|
259 | setappdata(handles.figure1,'strengthX_slow',strengthX_slow) |
---|
260 | setappdata(handles.figure1,'strengthZ_slow',strengthZ_slow) |
---|
261 | setappdata(handles.figure1,'strengthX_fast',strengthX_fast) |
---|
262 | setappdata(handles.figure1,'strengthZ_fast',strengthZ_fast) |
---|
263 | setappdata(handles.figure1,'efficiency_sx',efficiency_sx) |
---|
264 | setappdata(handles.figure1,'efficiency_fx',efficiency_fx) |
---|
265 | setappdata(handles.figure1,'efficiency_sz',efficiency_sz) |
---|
266 | setappdata(handles.figure1,'efficiency_fz',efficiency_fz) |
---|
267 | setappdata(handles.figure1,'idx_sx',idx_sx) |
---|
268 | setappdata(handles.figure1,'idx_fx',idx_fx) |
---|
269 | setappdata(handles.figure1,'idx_sz',idx_sz) |
---|
270 | setappdata(handles.figure1,'idx_fz',idx_fz) |
---|
271 | setappdata(handles.figure1,'orbitX',orbitX) |
---|
272 | setappdata(handles.figure1,'orbitZ',orbitZ) |
---|
273 | setappdata(handles.figure1,'BPM_list',BPM_list) |
---|
274 | |
---|
275 | set(handles.save_orbit,'Enable','on'); |
---|
276 | |
---|
277 | close(h2) |
---|
278 | |
---|
279 | |
---|
280 | |
---|
281 | |
---|
282 | |
---|
283 | % --- Executes during object creation, after setting all properties. |
---|
284 | function frequency_list_CreateFcn(hObject, eventdata, handles) |
---|
285 | % hObject handle to frequency_list (see GCBO) |
---|
286 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
287 | % handles empty - handles not created until after all CreateFcns called |
---|
288 | |
---|
289 | % Hint: listbox controls usually have a white background on Windows. |
---|
290 | % See ISPC and COMPUTER. |
---|
291 | if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) |
---|
292 | set(hObject,'BackgroundColor','white'); |
---|
293 | end |
---|
294 | |
---|
295 | |
---|
296 | % --- Executes on button press in aquisition. |
---|
297 | function aquisition_Callback(hObject, eventdata, handles) |
---|
298 | % hObject handle to aquisition (see GCBO) |
---|
299 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
300 | % handles structure with handles and user data (see GUIDATA) |
---|
301 | dev='ANS/DG/fofb-sniffer.2'; |
---|
302 | fech=10079; |
---|
303 | fmin_display=0; |
---|
304 | fmax_display=2100; |
---|
305 | fmax_memory=2000; |
---|
306 | |
---|
307 | BPM_list=dev2tangodev('BPMx',family2dev('BPMx')); |
---|
308 | Nbpm=size(BPM_list,1); |
---|
309 | |
---|
310 | buff_length=(get(handles.record_length,'String')); |
---|
311 | buffer_length=str2num(buff_length); |
---|
312 | |
---|
313 | tic |
---|
314 | h1=waitbar(0,'please wait...'); |
---|
315 | tango_write_attribute2(dev,'recordLengthInSecs',buffer_length) |
---|
316 | pause(1) |
---|
317 | record_length=tango_read_attribute2(dev,'recordLengthInSecs'); |
---|
318 | for i=1:buffer_length+2 |
---|
319 | pause(1) |
---|
320 | waitbar(i/buffer_length,h1); |
---|
321 | end |
---|
322 | data_record_time=toc; |
---|
323 | fprintf('data record time = %f seconds\n',toc) |
---|
324 | |
---|
325 | tic |
---|
326 | for j=1:1:Nbpm |
---|
327 | bufferX(j,:)=tango_command_inout2(dev,'GetXPosData',uint16((j))); |
---|
328 | bufferZ(j,:)=tango_command_inout2(dev,'GetZPosData',uint16((j))); |
---|
329 | Nsamples=size(bufferX(j,:),2); |
---|
330 | end |
---|
331 | data_reading_time=toc; |
---|
332 | fprintf('data download time = %f seconds\n',toc) |
---|
333 | |
---|
334 | tic |
---|
335 | [xfftamp,zfftamp,xfftphase,zfftphase,f_bpm]=fft_amp_phase_calcul(bufferX,bufferZ,fech); |
---|
336 | fft_computation_time=toc; |
---|
337 | fprintf('fft computation time = %f seconds\n',toc) |
---|
338 | |
---|
339 | |
---|
340 | |
---|
341 | |
---|
342 | semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r'); |
---|
343 | hold(handles.spectrum,'on'); |
---|
344 | semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:))); |
---|
345 | xlim(handles.spectrum,[fmin_display fmax_display]); |
---|
346 | %ylim(handles.spectrum,[10^-3 10^1]); |
---|
347 | xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic') |
---|
348 | %ylabel(handles.spectrum,'µm/sqrt(Hz)') |
---|
349 | title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold'); |
---|
350 | legend(handles.spectrum,'plan H','plan V'); |
---|
351 | set(handles.spectrum,'XGrid','on','YGrid','on'); |
---|
352 | hold(handles.spectrum,'off'); |
---|
353 | |
---|
354 | setappdata(handles.figure1,'bufferX', bufferX); |
---|
355 | setappdata(handles.figure1,'bufferZ', bufferZ); |
---|
356 | setappdata(handles.figure1,'xfftamp',xfftamp); |
---|
357 | setappdata(handles.figure1,'xfftphase',xfftphase); |
---|
358 | setappdata(handles.figure1,'zfftamp',zfftamp); |
---|
359 | setappdata(handles.figure1,'zfftphase',zfftphase); |
---|
360 | setappdata(handles.figure1,'f_bpm',f_bpm); |
---|
361 | setappdata(handles.figure1,'mean_xfftamp',mean(xfftamp(:,:))); |
---|
362 | setappdata(handles.figure1,'mean_zfftamp',mean(zfftamp(:,:))); |
---|
363 | |
---|
364 | mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp'); |
---|
365 | mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp'); |
---|
366 | |
---|
367 | for i=1:size(f_bpm,2)/2 |
---|
368 | list{i}=[num2str(f_bpm(i),'%10.2f'),' Hz X=',num2str(mean_xfftamp(i),'%10.1f'),' Z=',num2str(mean_zfftamp(i),'%10.1f')]; |
---|
369 | end |
---|
370 | |
---|
371 | set(handles.frequency_list,'string',list) |
---|
372 | |
---|
373 | cla(handles.HCOR) |
---|
374 | cla(handles.VCOR) |
---|
375 | cla(handles.Xorbit) |
---|
376 | cla(handles.Zorbit) |
---|
377 | |
---|
378 | set(handles.strength,'Enable','on'); |
---|
379 | set(handles.orbit_reduction,'Enable','on'); |
---|
380 | set(handles.save,'Enable','on'); |
---|
381 | |
---|
382 | close(h1) |
---|
383 | |
---|
384 | function record_length_Callback(hObject, eventdata, handles) |
---|
385 | % hObject handle to record_length (see GCBO) |
---|
386 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
387 | % handles structure with handles and user data (see GUIDATA) |
---|
388 | |
---|
389 | % Hints: get(hObject,'String') returns contents of record_length as text |
---|
390 | % str2double(get(hObject,'String')) returns contents of record_length as a double |
---|
391 | |
---|
392 | |
---|
393 | % --- Executes during object creation, after setting all properties. |
---|
394 | function record_length_CreateFcn(hObject, eventdata, handles) |
---|
395 | % hObject handle to record_length (see GCBO) |
---|
396 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
397 | % handles empty - handles not created until after all CreateFcns called |
---|
398 | |
---|
399 | % Hint: edit controls usually have a white background on Windows. |
---|
400 | % See ISPC and COMPUTER. |
---|
401 | if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) |
---|
402 | set(hObject,'BackgroundColor','white'); |
---|
403 | end |
---|
404 | |
---|
405 | |
---|
406 | % --- Executes on button press in load. |
---|
407 | function load_Callback(hObject, eventdata, handles) |
---|
408 | % hObject handle to load (see GCBO) |
---|
409 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
410 | % handles structure with handles and user data (see GUIDATA) |
---|
411 | |
---|
412 | |
---|
413 | fmin_display=0; |
---|
414 | fmax_display=2100; |
---|
415 | fech=10079; |
---|
416 | pathname='/home/operateur/GrpDiagnostics/matlab/data'; |
---|
417 | [filename, pathname, filterindex] = uigetfile('*.mat', 'Pick an MAT-file',pathname); |
---|
418 | if isequal(filename,0) || isequal(pathname,0) |
---|
419 | disp('Loading cancelled by user') |
---|
420 | else |
---|
421 | load([pathname filename],'bufferX','bufferZ','BPM_list'); |
---|
422 | end |
---|
423 | |
---|
424 | is_frequency_domain=get(handles.frequency_domain,'value'); |
---|
425 | |
---|
426 | if is_frequency_domain |
---|
427 | [xfftamp,zfftamp,xfftphase,zfftphase,f_bpm]=fft_amp_phase_calcul(bufferX,bufferZ,fech); |
---|
428 | |
---|
429 | semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r'); |
---|
430 | hold(handles.spectrum,'on'); |
---|
431 | semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:))); |
---|
432 | xlim(handles.spectrum,[fmin_display fmax_display]); |
---|
433 | %ylim(handles.spectrum,[10^-3 10^1]); |
---|
434 | xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic') |
---|
435 | %ylabel(handles.spectrum,'µm/sqrt(Hz)') |
---|
436 | title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold'); |
---|
437 | legend(handles.spectrum,'plan H','plan V'); |
---|
438 | set(handles.spectrum,'XGrid','on','YGrid','on'); |
---|
439 | hold(handles.spectrum,'off'); |
---|
440 | |
---|
441 | setappdata(handles.figure1,'xfftamp',xfftamp); |
---|
442 | setappdata(handles.figure1,'xfftphase',xfftphase); |
---|
443 | setappdata(handles.figure1,'zfftamp',zfftamp); |
---|
444 | setappdata(handles.figure1,'zfftphase',zfftphase); |
---|
445 | setappdata(handles.figure1,'f_bpm',f_bpm); |
---|
446 | setappdata(handles.figure1,'mean_xfftamp',mean(xfftamp(:,:))); |
---|
447 | setappdata(handles.figure1,'mean_zfftamp',mean(zfftamp(:,:))); |
---|
448 | setappdata(handles.figure1,'BPM_list',BPM_list) |
---|
449 | |
---|
450 | mean_xfftamp=getappdata(handles.figure1,'mean_xfftamp'); |
---|
451 | mean_zfftamp=getappdata(handles.figure1,'mean_zfftamp'); |
---|
452 | for i=1:size(f_bpm,2)/2 |
---|
453 | list{i}=[num2str(f_bpm(i),'%10.2f'),' Hz X=',num2str(mean_xfftamp(i),'%10.1f'),' Z=',num2str(mean_zfftamp(i),'%10.1f')]; |
---|
454 | end |
---|
455 | else |
---|
456 | plot(handles.spectrum,bufferX'); |
---|
457 | hold(handles.spectrum,'on'); |
---|
458 | plot(handles.spectrum,bufferZ'); |
---|
459 | xlabel(handles.spectrum,'position (meters)','fontsize',8,'fontangle','italic') |
---|
460 | ylabel(handles.spectrum,'BPM(nm)') |
---|
461 | title(handles.spectrum,'Position','FontWeight','Bold'); |
---|
462 | set(handles.spectrum,'XGrid','on','YGrid','on'); |
---|
463 | hold(handles.spectrum,'off'); |
---|
464 | |
---|
465 | setappdata(handles.figure1,'bufferX',bufferX); |
---|
466 | setappdata(handles.figure1,'bufferZ',bufferZ); |
---|
467 | |
---|
468 | for i=1:size(bufferX,2) |
---|
469 | list{i}=[num2str((i),'%10.2f'),' X=',num2str(std(bufferX(:,i)),'%10.1f'),' Z=',num2str(std(bufferZ(:,i)),'%10.1f')]; |
---|
470 | end |
---|
471 | end |
---|
472 | set(handles.frequency_list,'string',list) |
---|
473 | |
---|
474 | cla(handles.HCOR) |
---|
475 | cla(handles.VCOR) |
---|
476 | cla(handles.Xorbit) |
---|
477 | cla(handles.Zorbit) |
---|
478 | |
---|
479 | set(handles.strength,'Enable','on'); |
---|
480 | set(handles.orbit_reduction,'Enable','on'); |
---|
481 | set(handles.save_orbit,'Enable','off'); |
---|
482 | |
---|
483 | |
---|
484 | |
---|
485 | |
---|
486 | |
---|
487 | % --- Executes on button press in save. |
---|
488 | function save_Callback(hObject, eventdata, handles) |
---|
489 | % hObject handle to save (see GCBO) |
---|
490 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
491 | % handles structure with handles and user data (see GUIDATA) |
---|
492 | BPM_list=dev2tangodev('BPMx',family2dev('BPMx')); |
---|
493 | bufferX=getappdata(handles.figure1,'bufferX'); |
---|
494 | bufferZ=getappdata(handles.figure1,'bufferZ'); |
---|
495 | |
---|
496 | clk=clock; |
---|
497 | year=num2str(clk(1)); |
---|
498 | month=num2str(clk(2),'%.2d'); |
---|
499 | day=num2str(clk(3),'%.2d'); |
---|
500 | hour=[num2str(clk(4),'%.2d'),'h']; |
---|
501 | min=[num2str(clk(5),'%.2d'),'mn']; |
---|
502 | date=['_',year,'_',month,'_',day,'_',hour,'_',min]; |
---|
503 | filename=['/home/operateur/GrpDiagnostics/matlab/data/Enregistrement',date,'.mat']; |
---|
504 | |
---|
505 | uisave({'BPM_list','bufferX','bufferZ'},filename) |
---|
506 | |
---|
507 | |
---|
508 | |
---|
509 | % --- Executes on button press in orbit_reduction. |
---|
510 | function orbit_reduction_Callback(hObject, eventdata, handles) |
---|
511 | % hObject handle to orbit_reduction (see GCBO) |
---|
512 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
513 | % handles structure with handles and user data (see GUIDATA) |
---|
514 | |
---|
515 | % Hint: get(hObject,'Value') returns toggle state of orbit_reduction |
---|
516 | |
---|
517 | value=get(handles.strength,'value'); |
---|
518 | if value |
---|
519 | set(handles.strength,'value',0); |
---|
520 | else |
---|
521 | set(handles.strength,'value',1); |
---|
522 | end |
---|
523 | disp_corr(hObject, eventdata, handles) |
---|
524 | %frequency_list_Callback(hObject, eventdata, handles) |
---|
525 | |
---|
526 | % --- Executes on button press in strength. |
---|
527 | function strength_Callback(hObject, eventdata, handles) |
---|
528 | % hObject handle to strength (see GCBO) |
---|
529 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
530 | % handles structure with handles and user data (see GUIDATA) |
---|
531 | |
---|
532 | % Hint: get(hObject,'Value') returns toggle state of strength |
---|
533 | value=get(handles.orbit_reduction,'value'); |
---|
534 | if value |
---|
535 | set(handles.orbit_reduction,'value',0); |
---|
536 | else |
---|
537 | set(handles.orbit_reduction,'value',1); |
---|
538 | end |
---|
539 | disp_corr(hObject, eventdata, handles) |
---|
540 | %frequency_list_Callback(hObject, eventdata, handles) |
---|
541 | |
---|
542 | |
---|
543 | |
---|
544 | function disp_corr(hObject, eventdata, handles) |
---|
545 | |
---|
546 | FHCORspos = getspos('FHCOR',family2dev('FHCOR')); |
---|
547 | FVCORspos = getspos('FVCOR',family2dev('FVCOR')); |
---|
548 | HCORspos = getspos('HCOR',family2dev('HCOR')); |
---|
549 | VCORspos = getspos('VCOR',family2dev('VCOR')); |
---|
550 | |
---|
551 | strengthX_slow=getappdata(handles.figure1,'strengthX_slow'); |
---|
552 | strengthZ_slow=getappdata(handles.figure1,'strengthZ_slow'); |
---|
553 | strengthX_fast=getappdata(handles.figure1,'strengthX_fast'); |
---|
554 | strengthZ_fast=getappdata(handles.figure1,'strengthZ_fast'); |
---|
555 | efficiency_sx=getappdata(handles.figure1,'efficiency_sx'); |
---|
556 | efficiency_fx=getappdata(handles.figure1,'efficiency_fx'); |
---|
557 | efficiency_sz=getappdata(handles.figure1,'efficiency_sz'); |
---|
558 | efficiency_fz=getappdata(handles.figure1,'efficiency_fz'); |
---|
559 | idx_sx=getappdata(handles.figure1,'idx_sx'); |
---|
560 | idx_fx=getappdata(handles.figure1,'idx_fx'); |
---|
561 | idx_sz=getappdata(handles.figure1,'idx_sz'); |
---|
562 | idx_fz=getappdata(handles.figure1,'idx_fz'); |
---|
563 | |
---|
564 | disp_corr_strength=get(handles.strength,'value') |
---|
565 | disp_orbit_reduction=get(handles.orbit_reduction,'value') |
---|
566 | |
---|
567 | if disp_orbit_reduction |
---|
568 | bar(handles.HCOR,HCORspos,efficiency_sx(1:size(efficiency_sx,2)-1),1,'b') |
---|
569 | hold(handles.HCOR,'on') |
---|
570 | bar(handles.HCOR,FHCORspos,efficiency_fx(1:size(efficiency_fx,2)-1),0.6,'r') |
---|
571 | hold(handles.HCOR,'off') |
---|
572 | ylim(handles.HCOR,[0 100]); |
---|
573 | title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold'); |
---|
574 | set(handles.HCOR,'XGrid','on','YGrid','on'); |
---|
575 | xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
576 | text2=['FHCOR [',num2str(idx_fx),']']; |
---|
577 | text1=['HCOR [',num2str(idx_sx),']']; |
---|
578 | legend(handles.HCOR,text1,text2); |
---|
579 | |
---|
580 | bar(handles.RFCOR,1,efficiency_sx(size(efficiency_sx,2)),'g') |
---|
581 | ylim(handles.RFCOR,[0 100]); |
---|
582 | xlim(handles.RFCOR,[0 2]); |
---|
583 | set(handles.RFCOR,'XGrid','on','YGrid','on'); |
---|
584 | legend(handles.RFCOR,'RF'); |
---|
585 | |
---|
586 | bar(handles.VCOR,VCORspos,efficiency_sz,1,'b') |
---|
587 | set(handles.VCOR,'XGrid','on','YGrid','on'); |
---|
588 | hold(handles.VCOR,'on') |
---|
589 | bar(handles.VCOR,FVCORspos,efficiency_fz,0.6,'r') |
---|
590 | hold(handles.VCOR,'off') |
---|
591 | ylim(handles.VCOR,[0 100]); |
---|
592 | xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
593 | title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold'); |
---|
594 | legend2=['FVCOR [',num2str(idx_fz),']']; |
---|
595 | legend1=['VCOR [',num2str(idx_sz),']']; |
---|
596 | legend(handles.VCOR,legend1,legend2); |
---|
597 | |
---|
598 | else if disp_corr_strength |
---|
599 | bar(handles.HCOR,HCORspos,strengthX_slow(1:size(strengthX_slow,1)-1),1,'b') |
---|
600 | hold(handles.HCOR,'on') |
---|
601 | bar(handles.HCOR,FHCORspos,strengthX_fast(1:size(strengthX_fast,1)-1),0.6,'r') |
---|
602 | hold(handles.HCOR,'off') |
---|
603 | ylim(handles.HCOR,[-1 1]); |
---|
604 | title(handles.HCOR,'Horizontal correctors response to correct selected frequency','FontWeight','Bold'); |
---|
605 | set(handles.HCOR,'XGrid','on','YGrid','on'); |
---|
606 | xlabel(handles.HCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
607 | text2=['FHCOR [',num2str(idx_fx),']']; |
---|
608 | text1=['HCOR [',num2str(idx_sx),']']; |
---|
609 | legend(handles.HCOR,text1,text2); |
---|
610 | |
---|
611 | bar(handles.RFCOR,1,strengthX_slow(size(strengthX_slow,2)),'g') |
---|
612 | ylim(handles.RFCOR,[-1 1]); |
---|
613 | xlim(handles.RFCOR,[0 2]); |
---|
614 | set(handles.RFCOR,'XGrid','on','YGrid','on'); |
---|
615 | legend(handles.RFCOR,'RF'); |
---|
616 | |
---|
617 | bar(handles.VCOR,VCORspos,strengthZ_slow,1,'b') |
---|
618 | set(handles.VCOR,'XGrid','on','YGrid','on'); |
---|
619 | hold(handles.VCOR,'on') |
---|
620 | bar(handles.VCOR,FVCORspos,strengthZ_fast,0.6,'r') |
---|
621 | hold(handles.VCOR,'off') |
---|
622 | ylim(handles.VCOR,[-1 1]); |
---|
623 | xlabel(handles.VCOR,'position (meters)','fontsize',8,'fontangle','italic') |
---|
624 | title(handles.VCOR,'Vertical correctors response to correct selected frequency','FontWeight','Bold'); |
---|
625 | legend2=['FVCOR [',num2str(idx_fz),']']; |
---|
626 | legend1=['VCOR [',num2str(idx_sz),']']; |
---|
627 | legend(handles.VCOR,legend1,legend2); |
---|
628 | |
---|
629 | end |
---|
630 | |
---|
631 | end |
---|
632 | |
---|
633 | |
---|
634 | plot(handles.Zorbit,BPMspos,orbitZ,'k','Linewidth',2) |
---|
635 | set(handles.Zorbit,'XGrid','on','YGrid','on'); |
---|
636 | hold(handles.Zorbit,'on') |
---|
637 | plot(handles.Zorbit,BPMspos,slow_corr_orbit_z,'b') |
---|
638 | plot(handles.Zorbit,BPMspos,fast_corr_orbit_z,'r') |
---|
639 | hold(handles.Zorbit,'off') |
---|
640 | xlabel(handles.Zorbit,'position (meters)','fontsize',8,'fontangle','italic') |
---|
641 | title(handles.Zorbit,'Vertical orbit at selected frequency','FontWeight','Bold'); |
---|
642 | legend2=['MESC']; |
---|
643 | legend3=['MEFC']; |
---|
644 | legend(handles.Zorbit,'Zorbit',legend2,legend3); |
---|
645 | |
---|
646 | |
---|
647 | |
---|
648 | x_scale=get(handles.spectrum,'xlim'); |
---|
649 | |
---|
650 | |
---|
651 | semilogy(handles.spectrum,f_bpm,mean(xfftamp(:,:)),'r'); |
---|
652 | hold(handles.spectrum,'on'); |
---|
653 | semilogy(handles.spectrum,f_bpm,mean(zfftamp(:,:))); |
---|
654 | xlim(handles.spectrum,x_scale); |
---|
655 | %ylim(handles.spectrum,[10^-3 10^1]); |
---|
656 | xlabel(handles.spectrum,'frequency (Hz)','fontsize',8,'fontangle','italic') |
---|
657 | %ylabel(handles.spectrum,'µm/sqrt(Hz)') |
---|
658 | title(handles.spectrum,'Averaged fft amplitude','FontWeight','Bold'); |
---|
659 | legend(handles.spectrum,'plan H','plan V'); |
---|
660 | set(handles.spectrum,'XGrid','on','YGrid','on'); |
---|
661 | plot(handles.spectrum,f_bpm(selection),mean_xfftamp(selection),'ro','LineWidth',3,'MarkerSize',10) |
---|
662 | plot(handles.spectrum,f_bpm(selection),mean_zfftamp(selection),'bo','LineWidth',3,'MarkerSize',10) |
---|
663 | hold(handles.spectrum,'off'); |
---|
664 | |
---|
665 | setappdata(handles.figure1,'strengthX_slow',strengthX_slow) |
---|
666 | setappdata(handles.figure1,'strengthZ_slow',strengthZ_slow) |
---|
667 | setappdata(handles.figure1,'strengthX_fast',strengthX_fast) |
---|
668 | setappdata(handles.figure1,'strengthZ_fast',strengthZ_fast) |
---|
669 | setappdata(handles.figure1,'efficiency_sx',efficiency_sx) |
---|
670 | setappdata(handles.figure1,'efficiency_fx',efficiency_fx) |
---|
671 | setappdata(handles.figure1,'efficiency_sz',efficiency_sz) |
---|
672 | setappdata(handles.figure1,'efficiency_fz',efficiency_fz) |
---|
673 | setappdata(handles.figure1,'idx_sx',idx_sx) |
---|
674 | setappdata(handles.figure1,'idx_fx',idx_fx) |
---|
675 | setappdata(handles.figure1,'idx_sz',idx_sz) |
---|
676 | setappdata(handles.figure1,'idx_fz',idx_fz) |
---|
677 | setappdata(handles.figure1,'orbitX',orbitX) |
---|
678 | setappdata(handles.figure1,'orbitZ',orbitZ) |
---|
679 | setappdata(handles.figure1,'BPM_list',BPM_list) |
---|
680 | |
---|
681 | set(handles.save_orbit,'Enable','on'); |
---|
682 | |
---|
683 | close(h2) |
---|
684 | |
---|
685 | |
---|
686 | % --- Executes on button press in save_orbit. |
---|
687 | function save_orbit_Callback(hObject, eventdata, handles) |
---|
688 | % hObject handle to save_orbit (see GCBO) |
---|
689 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
690 | % handles structure with handles and user data (see GUIDATA) |
---|
691 | orbitX=getappdata(handles.figure1,'orbitX') |
---|
692 | orbitZ=getappdata(handles.figure1,'orbitZ') |
---|
693 | BPM_list=dev2tangodev('BPMx',family2dev('BPMx')); |
---|
694 | |
---|
695 | clk=clock; |
---|
696 | year=num2str(clk(1)); |
---|
697 | month=num2str(clk(2),'%.2d'); |
---|
698 | day=num2str(clk(3),'%.2d'); |
---|
699 | hour=[num2str(clk(4),'%.2d'),'h']; |
---|
700 | min=[num2str(clk(5),'%.2d'),'mn']; |
---|
701 | date=['_',year,'_',month,'_',day,'_',hour,'_',min]; |
---|
702 | filename=['/home/operateur/GrpDiagnostics/matlab/data/Enregistrement',date,'.mat']; |
---|
703 | |
---|
704 | uisave({'BPM_list','orbitX','orbitZ'},filename) |
---|
705 | |
---|
706 | |
---|
707 | |
---|
708 | % --- Executes on button press in frequency_domain. |
---|
709 | function frequency_domain_Callback(hObject, eventdata, handles) |
---|
710 | % hObject handle to frequency_domain (see GCBO) |
---|
711 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
712 | % handles structure with handles and user data (see GUIDATA) |
---|
713 | |
---|
714 | % Hint: get(hObject,'Value') returns toggle state of frequency_domain |
---|
715 | value=get(handles.time_domain,'value'); |
---|
716 | if value |
---|
717 | set(handles.time_domain,'value',0); |
---|
718 | else |
---|
719 | set(handles.time_domain,'value',1); |
---|
720 | end |
---|
721 | |
---|
722 | |
---|
723 | % --- Executes on button press in time_domain. |
---|
724 | function time_domain_Callback(hObject, eventdata, handles) |
---|
725 | % hObject handle to time_domain (see GCBO) |
---|
726 | % eventdata reserved - to be defined in a future version of MATLAB |
---|
727 | % handles structure with handles and user data (see GUIDATA) |
---|
728 | |
---|
729 | % Hint: get(hObject,'Value') returns toggle state of time_domain |
---|
730 | value=get(handles.frequency_domain,'value'); |
---|
731 | if value |
---|
732 | set(handles.frequency_domain,'value',0); |
---|
733 | else |
---|
734 | set(handles.frequency_domain,'value',1); |
---|
735 | end |
---|