From ee8cf7ccd4f7cd0ce00cfa5c4017af9a80a1dca7 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Wed, 17 Feb 2016 16:38:34 +0000 Subject: [PATCH] add GUI and functions to fit combined CEZ and CMZ git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@5479 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/AUG/CEZ_CMZ_fit.m | 150 ++++++++++ crpptbx/AUG/CEZ_CMZ_guiplot.fig | Bin 0 -> 16663 bytes crpptbx/AUG/CEZ_CMZ_guiplot.m | 466 ++++++++++++++++++++++++++++++++ 3 files changed, 616 insertions(+) create mode 100644 crpptbx/AUG/CEZ_CMZ_fit.m create mode 100644 crpptbx/AUG/CEZ_CMZ_guiplot.fig create mode 100644 crpptbx/AUG/CEZ_CMZ_guiplot.m diff --git a/crpptbx/AUG/CEZ_CMZ_fit.m b/crpptbx/AUG/CEZ_CMZ_fit.m new file mode 100644 index 00000000..847b64e4 --- /dev/null +++ b/crpptbx/AUG/CEZ_CMZ_fit.m @@ -0,0 +1,150 @@ +function [filename_withfits,filename_data,cez_cmz_data,cez_cmz_fit] = CEZ_CMZ_fit(shot,time_interval_in,tension_ti_in,tension_vrot_in,coeff_ti_cmz_in,coeff_vrot_cmz_in); +% +% [filename_withfits,filename_data,cez_cmz_data,cez_cmz_fit] = CEZ_CMZ_fit(shot,time_interval_in,tension_ti_in,tension_vrot_in,coeff_ti_cmz_in,coeff_vrot_cmz_in); +% + +filename_data = [num2str(shot) '_CEZ_CMZ.mat']; +filename_withfits = [num2str(shot) '_CEZ_CMZ_forgui.mat']; +if exist(filename_data,'file') + load(filename_data) +else + cxrs=gdat(shot,'cxrs_rho','doplot',1); + cmz=gdat(shot,'cxrs_rho','doplot',1,'source','cmz'); + eval(['save ' filename_data]) +end +cez_cmz_data = []; +cez_cmz_fit = []; + +main_time_base = cxrs.t; + +ij=find(main_time_base>=time_interval_in(1) & main_time_base<=time_interval_in(2)); +if length(ij)==1 + disp('not yet ready') + return +end + +cez_cmz_data.time = main_time_base(ij); +for i=1:length(ij) + if i==1 + t1(i) = main_time_base(ij(i)) - 0.5*diff(main_time_base(ij([i:i+1]))); + else + t1(i) = mean(main_time_base(ij([i-1:i]))); + end + if i==length(ij) + t2(i) = main_time_base(ij(i)) + 0.5*diff(main_time_base(ij([i-1:i]))); + else + t2(i) = mean(main_time_base(ij([i:i+1]))); + end + cez_cmz_data.time_interval(i,1:2) = [t1(i) t2(i)]; +end + +rhotorfit=linspace(0,1,200); +ticoeff_err_cxrs=1.; +if exist('coeff_ti_cmz_in') && ~isempty(coeff_ti_cmz_in) + ticoeff_err_cmz=coeff_ti_cmz_in; % (if weight is different) +else + ticoeff_err_cmz=1.0; % (if weight is different) +end +vrotcoeff_err_cxrs=1.; +if exist('coeff_vrot_cmz_in') && ~isempty(coeff_vrot_cmz_in) + vrotcoeff_err_cmz=coeff_vrot_cmz_in; % (if weight is different) +else + vrotcoeff_err_cmz=0.1; % (if weight is different) +end +if exist('tension_ti_in') && ~isempty(tension_ti_in) + tension_ti_eff = tension_ti_in; +else + tension_ti_eff=-3; +end +if exist('tension_vrot_in') && ~isempty(tension_vrot_in) + tension_vrot_eff = tension_vrot_in; +else + tension_vrot_eff=-3; +end + +doplot=0; +for i=1:length(ij) + it_cxrs = find(cxrs.t>=t1(i) & cxrs.t<t2(i)); + it_cmz = find(cmz.t>=t1(i) & cmz.t<t2(i)); + % construct 1D array with data from both cxrs, cmz + rhotor_data_tofit = []; + tidata_tofit = []; + vrotdata_tofit = []; + tierr_tofit = []; + vroterr_tofit = []; + if ~isempty(it_cxrs) + for it=1:length(it_cxrs) + idata = find(cxrs.ti.data(:,it_cxrs(it))>0 & cxrs.rhotornorm(:,it_cxrs(it))<1.01); + if length(idata)>0 + rhotor_data_tofit(end+1:end+length(idata)) = cxrs.rhotornorm(idata,it_cxrs(it)); + tidata_tofit(end+1:end+length(idata)) = cxrs.ti.data(idata,it_cxrs(it)); + vrotdata_tofit(end+1:end+length(idata)) = cxrs.vrot.data(idata,it_cxrs(it)); + tierr_tofit(end+1:end+length(idata)) = cxrs.ti.error_bar(idata,it_cxrs(it))./ticoeff_err_cxrs; + vroterr_tofit(end+1:end+length(idata)) = cxrs.vrot.error_bar(idata,it_cxrs(it))./vrotcoeff_err_cxrs; + end + end + end + if ~isempty(it_cmz) + for it=1:length(it_cmz) + idata = find(cmz.ti.data(:,it_cmz(it))>0 & cmz.rhotornorm(:,it_cmz(it))<1.01); + if length(idata)>0 + rhotor_data_tofit(end+1:end+length(idata)) = cmz.rhotornorm(idata,it_cmz(it)); + tidata_tofit(end+1:end+length(idata)) = cmz.ti.data(idata,it_cmz(it)); + vrotdata_tofit(end+1:end+length(idata)) = cmz.vrot.data(idata,it_cmz(it)); + tierr_tofit(end+1:end+length(idata)) = cmz.ti.error_bar(idata,it_cmz(it))./ticoeff_err_cmz; + vroterr_tofit(end+1:end+length(idata)) = cmz.vrot.error_bar(idata,it_cmz(it))./vrotcoeff_err_cmz; + end + end + rhotor_data_tofit_cmz = cmz.rhotornorm(:,it_cmz); + tidata_tofit_cmz = cmz.ti.data(:,it_cmz); + vrotdata_tofit_cmz = cmz.vrot.data(:,it_cmz); + tierr_tofit_cmz = cmz.ti.error_bar(:,it_cmz); + vroterr_tofit_cmz = cmz.vrot.error_bar(:,it_cmz); + end + [rhoeff,irhoeff] = sort(rhotor_data_tofit); + tidata_tofit_eff = tidata_tofit(irhoeff); + vrotdata_tofit_eff = vrotdata_tofit(irhoeff); + tierr_tofit_eff = tierr_tofit(irhoeff); + vroterr_tofit_eff = vroterr_tofit(irhoeff); + cez_cmz_data.ti{i}.rhotornorm = rhoeff; + cez_cmz_data.ti{i}.data = tidata_tofit_eff; + cez_cmz_data.ti{i}.err = tierr_tofit_eff; + cez_cmz_data.vrot{i}.rhotornorm = rhoeff; + cez_cmz_data.vrot{i}.data = vrotdata_tofit_eff; + cez_cmz_data.vrot{i}.err = vroterr_tofit_eff; + xeff = [0. rhoeff]; + yeffti = [tidata_tofit_eff(1) tidata_tofit_eff]; + yeffvrot = [vrotdata_tofit_eff(1) vrotdata_tofit_eff]; + erreffti = [100.*max(tierr_tofit_eff) tierr_tofit_eff]; + erreffvrot = [100.*max(vroterr_tofit_eff) vroterr_tofit_eff]; + [tifit(:,i),dtifitdrn(:,i)]=interpos(xeff,yeffti,rhotorfit,tension_ti_eff,[1 0],[0 0],erreffti); + [vrotfit(:,i),dvrotfitdrn(:,i)]=interpos(xeff,yeffvrot,rhotorfit,tension_vrot_eff,[1 0],[0 0],erreffvrot); + if doplot + figure(11);clf + errorbar(rhoeff,tidata_tofit_eff,tierr_tofit_eff,'*'); + hold all + plot(rhotorfit,tifit(:,i)) + figure(12);clf + errorbar(rhoeff,vrotdata_tofit_eff,vroterr_tofit_eff,'*'); + hold all + plot(rhotorfit,vrotfit(:,i)) + pause(0.01) + end +end + +cez_cmz_fit.rhotornorm = rhotorfit; +cez_cmz_fit.ti = tifit; +cez_cmz_fit.dtidrhotornorm = dtifitdrn; +cez_cmz_fit.vrot = vrotfit; +cez_cmz_fit.dvrotdrhotornorm = dvrotfitdrn; +cez_cmz_fit.shot = shot; +cez_cmz_fit.tension_ti = tension_ti_eff; +cez_cmz_fit.tension_vrot = tension_vrot_eff; +cez_cmz_fit.ticoeff_err_cxrs = ticoeff_err_cxrs; +cez_cmz_fit.ticoeff_err_cmz = ticoeff_err_cmz; +cez_cmz_fit.vrotcoeff_err_cxrs = vrotcoeff_err_cxrs; +cez_cmz_fit.vrotcoeff_err_cmz = vrotcoeff_err_cmz; +cez_cmz_data.shot = shot; + +eval(['save ' filename_withfits ' cez_cmz_fit cez_cmz_data']) + diff --git a/crpptbx/AUG/CEZ_CMZ_guiplot.fig b/crpptbx/AUG/CEZ_CMZ_guiplot.fig new file mode 100644 index 0000000000000000000000000000000000000000..a30d6faacfb819677b87fcddd6e30c9d0c4185d5 GIT binary patch literal 16663 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 literal 0 HcmV?d00001 diff --git a/crpptbx/AUG/CEZ_CMZ_guiplot.m b/crpptbx/AUG/CEZ_CMZ_guiplot.m new file mode 100644 index 00000000..3066c2d4 --- /dev/null +++ b/crpptbx/AUG/CEZ_CMZ_guiplot.m @@ -0,0 +1,466 @@ +function varargout = CEZ_CMZ_guiplot(varargin) +% CEZ_CMZ_GUIPLOT MATLAB code for CEZ_CMZ_guiplot.fig +% CEZ_CMZ_GUIPLOT, by itself, creates a new CEZ_CMZ_GUIPLOT or raises the existing +% singleton*. +% +% H = CEZ_CMZ_GUIPLOT returns the handle to a new CEZ_CMZ_GUIPLOT or the handle to +% the existing singleton*. +% +% CEZ_CMZ_GUIPLOT('CALLBACK',hObject,eventData,handles,...) calls the local +% function named CALLBACK in CEZ_CMZ_GUIPLOT.M with the given input arguments. +% +% CEZ_CMZ_GUIPLOT('Property','Value',...) creates a new CEZ_CMZ_GUIPLOT or raises the +% existing singleton*. Starting from the left, property value pairs are +% applied to the GUI before CEZ_CMZ_guiplot_OpeningFcn gets called. An +% unrecognized property name or invalid value makes property application +% stop. All inputs are passed to CEZ_CMZ_guiplot_OpeningFcn via varargin. +% +% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one +% instance to run (singleton)". +% +% See also: GUIDE, GUIDATA, GUIHANDLES + +% Edit the above text to modify the response to help CEZ_CMZ_guiplot + +% Last Modified by GUIDE v2.5 17-Feb-2016 15:49:42 + +% Begin initialization code - DO NOT EDIT +gui_Singleton = 1; +gui_State = struct('gui_Name', mfilename, ... + 'gui_Singleton', gui_Singleton, ... + 'gui_OpeningFcn', @CEZ_CMZ_guiplot_OpeningFcn, ... + 'gui_OutputFcn', @CEZ_CMZ_guiplot_OutputFcn, ... + 'gui_LayoutFcn', [] , ... + 'gui_Callback', []); +if nargin && ischar(varargin{1}) + gui_State.gui_Callback = str2func(varargin{1}); +end + +if nargout + [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); +else + gui_mainfcn(gui_State, varargin{:}); +end +% End initialization code - DO NOT EDIT + + +% --- Executes just before CEZ_CMZ_guiplot is made visible. +function CEZ_CMZ_guiplot_OpeningFcn(hObject, eventdata, handles, varargin) +% This function has no output args, see OutputFcn. +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) +% varargin command line arguments to CEZ_CMZ_guiplot (see VARARGIN) + +% Choose default command line output for CEZ_CMZ_guiplot +handles.output = hObject; + +handles = init_CEZ_gui(handles); + +% Update handles structure +guidata(hObject, handles); + +% UIWAIT makes CEZ_CMZ_guiplot wait for user response (see UIRESUME) +% uiwait(handles.figure1); + + +% --- Outputs from this function are returned to the command line. +function varargout = CEZ_CMZ_guiplot_OutputFcn(hObject, eventdata, handles) +% varargout cell array for returning output args (see VARARGOUT); +% hObject handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Get default command line output from handles structure +varargout{1} = handles.output; + + +% --- Executes on slider movement. +function time_set_slider_Callback(hObject, eventdata, handles) +% hObject handle to time_set_slider (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'Value') returns position of slider +% get(hObject,'Min') and get(hObject,'Max') to determine range of slider + +time_slide = get(hObject,'Value'); +time_eff = handles.data.time(1) + (time_slide-handles.slider_range(1))./diff(handles.slider_range).*(handles.data.time(end)-handles.data.time(1)); +handles.it_index = iround_os(handles.data.time,time_eff); +set(handles.time_set_value,'string',num2str(handles.data.time(handles.it_index))); + + +replot(handles); + +% --- Executes during object creation, after setting all properties. +function time_set_slider_CreateFcn(hObject, eventdata, handles) +% hObject handle to time_set_slider (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: slider controls usually have a light gray background. +if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor',[.9 .9 .9]); +end + + + +function time_set_value_Callback(hObject, eventdata, handles) +% hObject handle to time_set_value (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of time_set_value as text +% str2double(get(hObject,'String')) returns contents of time_set_value as a double + +time = get(handles.time_set_value,'string'); +time = str2num(time); +handles.it_index = iround_os(handles.data.time,time) +time_slide = (time-handles.data.time(1))./(handles.data.time(end)-handles.data.time(1)).*diff(handles.slider_range) + handles.slider_range(1); +set(handles.time_set_slider,'Value',time_slide); + +replot(handles); + +guidata(hObject, handles); + +% --- Executes during object creation, after setting all properties. +function time_set_value_CreateFcn(hObject, eventdata, handles) +% hObject handle to time_set_value (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + +function replot(handles) +% hObject handle to time_set_value (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of time_set_value as text +% str2double(get(hObject,'String')) returns contents of time_set_value as a double + +% Ti +ihold_ti = get(handles.set_hold_ti,'Value'); +if ihold_ti ==0 + hold(handles.ti_axes,'off'); +else + hold(handles.ti_axes,'all'); +end +errorbar(handles.ti_axes,handles.data.ti{handles.it_index}.rhotornorm,handles.data.ti{handles.it_index}.data,handles.data.ti{handles.it_index}.err,'*'); +hold(handles.ti_axes,'all'); +plot(handles.ti_axes,handles.fit.rhotornorm,handles.fit.ti(:,handles.it_index),'-'); +set(handles.ti_axes,'XLim',[0 1.2]); +ti_max = str2double(get(handles.set_ti_max,'String')); +if ti_max>0 + set(handles.ti_axes,'YLim',[0 ti_max*1e3]); +end + +% Vrot +ihold_vrot = get(handles.set_hold_vrot,'Value'); +if ihold_vrot ==0 + hold(handles.vrot_axes,'off'); +else + hold(handles.vrot_axes,'all'); +end +errorbar(handles.vrot_axes,handles.data.vrot{handles.it_index}.rhotornorm,handles.data.vrot{handles.it_index}.data,handles.data.vrot{handles.it_index}.err,'*'); +hold(handles.vrot_axes,'all'); +plot(handles.vrot_axes,handles.fit.rhotornorm,handles.fit.vrot(:,handles.it_index),'-'); +set(handles.ti_axes,'XLim',[0 1.2]); +vrot_max = str2double(get(handles.set_vrot_max,'String')); +if vrot_max>0 + set(handles.vrot_axes,'YLim',[0 vrot_max*1e3]); +end + +% lambda_ti +if ihold_ti ==0 + hold(handles.set_axes_lambda_ti,'off'); +else + hold(handles.set_axes_lambda_ti,'all'); +end +plot(handles.set_axes_lambda_ti,handles.fit.rhotornorm,-handles.fit.dtidrhotornorm(:,handles.it_index)./handles.fit.ti(:,handles.it_index),'-'); + +% lambda_vrot +if ihold_vrot ==0 + hold(handles.set_axes_lambda_vrot,'off'); +else + hold(handles.set_axes_lambda_vrot,'all'); +end +plot(handles.set_axes_lambda_vrot,handles.fit.rhotornorm,-handles.fit.dvrotdrhotornorm(:,handles.it_index)./handles.fit.vrot(:,handles.it_index),'-'); +set(handles.set_axes_lambda_vrot,'XAxisLocation','top') +set(handles.set_axes_lambda_vrot,'YAxisLocation','right') + +zoom(handles.ti_axes,'on'); + + +function set_shot_Callback(hObject, eventdata, handles) +% hObject handle to set_shot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_shot as text +% str2double(get(hObject,'String')) returns contents of set_shot as a double + +shot = get(handles.set_shot,'String'); shot = str2num(shot); + +tension_ti = get(handles.set_tension_ti,'string'); tension_ti = str2num(tension_ti); +tension_vrot = get(handles.set_tension_vrot,'string'); tension_vrot = str2num(tension_vrot); +time_interval = get(handles.set_time_interval,'string'); time_interval = str2num(time_interval); +coeff_ti_cmz = get(handles.set_coeffCMZ_ti,'string'); coeff_ti_cmz = str2num(coeff_ti_cmz); +coeff_vrot_cmz = get(handles.set_coeff_vrot,'string'); coeff_vrot_cmz = str2num(coeff_vrot_cmz); + +[filename_withfits,filename_data,cez_cmz_data,cez_cmz_fit] = ... + CEZ_CMZ_fit(shot,time_interval,tension_ti,tension_vrot,coeff_ti_cmz,coeff_vrot_cmz); + +handles.filename_withfits = filename_withfits; +handles = init_CEZ_gui(handles); + +% Update handles structure +guidata(hObject, handles); + + +% --- Executes during object creation, after setting all properties. +function set_shot_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_shot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + +function handles_out = init_CEZ_gui(handles) +% hObject handle to time_set_value (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +try + load(handles.filename_withfits) + handles.data = cez_cmz_data; + handles.fit = cez_cmz_fit; + handles.slider_range = [get(handles.time_set_slider,'Min') get(handles.time_set_slider,'Max')]; + + time_prev = get(handles.time_set_value,'string'); + if strcmp(time_prev,'Edit Text') + handles.it_index = 1; + set(handles.time_set_value,'string',num2str(handles.data.time(handles.it_index))); + set(handles.time_set_slider,'Value',handles.slider_range(1)); + else + time = str2num(time_prev); + handles.it_index = iround_os(handles.data.time,time); + time_slide = (time-handles.data.time(1))./(handles.data.time(end)-handles.data.time(1)).*diff(handles.slider_range) + handles.slider_range(1); + set(handles.time_set_slider,'Value',time_slide); + end + + set(handles.set_shot,'string',num2str(handles.data.shot)); + + replot(handles); +catch + % no such file + handles.data = []; + handles.fit = []; + handles.it_index = []; + set(handles.set_shot,'string','enter shot'); +end + +handles_out = handles; + + + +function set_tension_ti_Callback(hObject, eventdata, handles) +% hObject handle to set_tension_ti (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_tension_ti as text +% str2double(get(hObject,'String')) returns contents of set_tension_ti as a double + + +% --- Executes during object creation, after setting all properties. +function set_tension_ti_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_tension_ti (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + +function set_tension_vrot_Callback(hObject, eventdata, handles) +% hObject handle to set_tension_vrot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_tension_vrot as text +% str2double(get(hObject,'String')) returns contents of set_tension_vrot as a double + + +% --- Executes during object creation, after setting all properties. +function set_tension_vrot_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_tension_vrot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + +function set_coeffCMZ_ti_Callback(hObject, eventdata, handles) +% hObject handle to set_coeffCMZ_ti (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_coeffCMZ_ti as text +% str2double(get(hObject,'String')) returns contents of set_coeffCMZ_ti as a double + +set_shot_Callback(hObject, eventdata, handles); + +% --- Executes during object creation, after setting all properties. +function set_coeffCMZ_ti_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_coeffCMZ_ti (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + +function set_coeff_vrot_Callback(hObject, eventdata, handles) +% hObject handle to set_coeff_vrot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_coeff_vrot as text +% str2double(get(hObject,'String')) returns contents of set_coeff_vrot as a double + +set_shot_Callback(hObject, eventdata, handles); + + +% --- Executes during object creation, after setting all properties. +function set_coeff_vrot_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_coeff_vrot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + +% --- Executes on button press in set_hold_ti. +function set_hold_ti_Callback(hObject, eventdata, handles) +% hObject handle to set_hold_ti (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +ihold_ti = get(handles.set_hold_ti,'Value'); +if ihold_ti ==0 + set(handles.set_hold_ti,'String','Hold off'); +else + set(handles.set_hold_ti,'String','Hold on'); +end + + +% --- Executes on button press in set_hold_vrot. +function set_hold_vrot_Callback(hObject, eventdata, handles) +% hObject handle to set_hold_vrot (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +ihold_vrot = get(handles.set_hold_vrot,'Value'); +if ihold_vrot ==0 + set(handles.set_hold_vrot,'String','Hold off'); +else + set(handles.set_hold_vrot,'String','Hold on'); +end + + + +function set_time_interval_Callback(hObject, eventdata, handles) +% hObject handle to set_time_interval (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_time_interval as text +% str2double(get(hObject,'String')) returns contents of set_time_interval as a double + +set_shot_Callback(hObject, eventdata, handles); + +% --- Executes during object creation, after setting all properties. +function set_time_interval_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_time_interval (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + +function set_ti_max_Callback(hObject, eventdata, handles) +% hObject handle to set_ti_max (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_ti_max as text +% str2double(get(hObject,'String')) returns contents of set_ti_max as a double + +replot(handles); + +% --- Executes during object creation, after setting all properties. +function set_ti_max_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_ti_max (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + +function set_vrot_max_Callback(hObject, eventdata, handles) +% hObject handle to set_vrot_max (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of set_vrot_max as text +% str2double(get(hObject,'String')) returns contents of set_vrot_max as a double + +replot(handles); + +% --- Executes during object creation, after setting all properties. +function set_vrot_max_CreateFcn(hObject, eventdata, handles) +% hObject handle to set_vrot_max (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end -- GitLab