gui_taus_matlab
GUI using app designer in matlab for relaxation analysis
classdef analysisAD < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure % UI Figure
TabGroup matlab.ui.container.TabGroup % Prepari...
prep matlab.ui.container.Tab % Preparing
UIAxes1 matlab.ui.control.UIAxes % Title
init matlab.ui.container.Panel % Initial...
LabelSlider matlab.ui.control.Label % Begin
cutBegin matlab.ui.control.Slider % [1 100]
Label matlab.ui.control.Label % End
cutEnd matlab.ui.control.Slider % [0 100]
setP matlab.ui.control.Button % Set
findk matlab.ui.control.Button % Find K's
findpulse matlab.ui.control.Button % Find pu...
qvstime matlab.ui.control.Button % SeeQ
pulsenumtext matlab.ui.control.TextArea
qends matlab.ui.control.Button % Qends
LabelNumericEditField4 matlab.ui.control.Label % Poly de...
polydegree matlab.ui.control.NumericEditField % [1 10]
applypoly matlab.ui.control.Button % Apply poly
OpenFile matlab.ui.control.Button % open file
LabelNumericEditField6 matlab.ui.control.Label % SFluid ...
sfluid matlab.ui.control.NumericEditField % [0 1]
LabelTextArea matlab.ui.control.Label % K values
textfork matlab.ui.control.TextArea % K_T = 0
LabelEditField matlab.ui.control.Label % Folder ...
path matlab.ui.control.EditField % D:\ther...
tempSF matlab.ui.control.Button % Tempera...
Tab2 matlab.ui.container.Tab % Filtering
UIAxes2 matlab.ui.control.UIAxes % Title
Panel matlab.ui.container.Panel % Pulse s...
LabelNumericEditField matlab.ui.control.Label % Pulse n...
pulsenum matlab.ui.control.NumericEditField % [0 Inf]
LabelDropDown matlab.ui.control.Label % Filters
filt matlab.ui.control.DropDown % Median,...
LabelNumericEditField2 matlab.ui.control.Label % 1st fie...
filt_n1 matlab.ui.control.NumericEditField % [0 Inf]
apply1 matlab.ui.control.Button % Apply f...
incline matlab.ui.control.Button % Incline
LabelSlider2 matlab.ui.control.Label % Begin
cutBegin2 matlab.ui.control.Slider % [1 100]
Label2 matlab.ui.control.Label % End
cutEnd2 matlab.ui.control.Slider % [1 100]
apply_cut matlab.ui.control.Button % Apply cut
Tab3 matlab.ui.container.Tab % Fitting
UIAxes3 matlab.ui.control.UIAxes % Title
Panel2 matlab.ui.container.Panel % Filter ...
LabelDropDown2 matlab.ui.control.Label % Fitting...
fitfuns matlab.ui.control.DropDown % Fit1, F...
Label3 matlab.ui.control.Label % Fit 1: ...
Label4 matlab.ui.control.Label % Fit 2: ...
Label5 matlab.ui.control.Label % Fit 3: ...
exportF matlab.ui.control.Button % Export ...
UIAxes4 matlab.ui.control.UIAxes % Title
Panel3 matlab.ui.container.Panel % Fitting...
printfit matlab.ui.control.TextArea % 1
Tab4 matlab.ui.container.Tab % Residuals
UIAxes5 matlab.ui.control.UIAxes % Residuals
UIAxes6 matlab.ui.control.UIAxes % Title
errtext matlab.ui.control.TextArea % res_n
LabelNumericEditField3 matlab.ui.control.Label % Bins
nbin matlab.ui.control.NumericEditField % [1 Inf]
clear_err matlab.ui.control.Button % Clear
Closeapp matlab.ui.control.Button % Close
LabelNumericEditField5 matlab.ui.control.Label % Edit Field
k_f2 matlab.ui.control.NumericEditField % [-Inf Inf]
Tab5 matlab.ui.container.Tab % Re-model
UIAxes7 matlab.ui.control.UIAxes % Re-model
end
properties (Access = public)
ff; % import data function
ff1; % data after cutting
beg1; % cut begin in ini
end1; % cut form end in ini
beg2; % cut after filtering
end2;
c; % indecies of begin and end pulse
pulse_one; % Description
n_pul; % number of pulse
af; % filtered y axis
f_inc; % data after incline
k_q; %incline of Q data
b_q;
tim; % time after filtering
tem; % temperature of pulse
fit1; % fit 1 parametrs
fit2; % fit 2 parameters
fit3;
fit4;
poly_off;
end
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
app.path.Value=pwd;
[file,ruta]=uigetfile({'*.dat'},'Select a dat file for second Fork');
cd(ruta);
ff2=importdata(file);
[b1,~]=size(ff2.data);
if b1>1
app.ff=ff2.data;
else
app.ff=str2double(ff2.textdata(2:end,2:end));
end
app.ff(:,1)=app.ff(:,1)-app.ff(1,1);
app.ff(:,end)=[];
%% initial parameters
cd(app.path.Value)
app.end1=length(app.ff);
app.beg1=1;
app.cutBegin.Limits = [1 app.end1];
app.cutEnd.Limits = [1 app.end1];
app.cutEnd.Value = app.end1;
app.ff1=app.ff;
Pkb=[0 0];
app.fit2=[1 0 1000 0];
app.b_q=0;
p_n=1;
%% plot temperature vs time
app.UIAxes1.cla;
plot(app.UIAxes1,app.ff(:,1),app.ff(:,12));
title(app.UIAxes1, 'Print after import');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
mintime=1;
maxtime=length(app.ff);
end
% cutBegin value changed function
function cutBeginValueChanged(app)
app.beg1 = round(app.cutBegin.Value);
app.UIAxes1.cla;
plot(app.UIAxes1,app.ff(app.beg1:app.end1,1),app.ff(app.beg1:app.end1,12));
title(app.UIAxes1, 'Modifying');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
end
% cutEnd value changed function
function cutEndValueChanged(app)
app.end1 = round(app.cutEnd.Value);
app.UIAxes1.cla;
plot(app.UIAxes1,app.ff(app.beg1:app.end1,1),app.ff(app.beg1:app.end1,12));
title(app.UIAxes1, 'Modifying');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
end
% setP button pushed function
function setPButtonPushed(app)
app.ff1=app.ff;
app.ff1(app.end1:end,:)=[];
app.ff1(1:app.beg1,:)=[];
app.UIAxes1.cla;
plot(app.UIAxes1,app.ff1(:,1),app.ff1(:,12));
title(app.UIAxes1, 'Modifyed');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
ylim(app.UIAxes1,'auto');
end
% qvstime button pushed function
function qvstimeButtonPushed(app)
app.UIAxes1.cla;
plot(app.UIAxes1,app.ff1(:,1),app.ff1(:,5));
title(app.UIAxes1, 'Modifyed');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
end
% findk button pushed function
function findkButtonPushed(app)
Pkb = polyfit(app.ff1(:,1),app.ff1(:,12),1);
x1=mean(app.ff1(1:100,1));
x2=mean(app.ff1(end-100:end,1));
y1=mean(app.ff1(1:100,5));
y2=mean(app.ff1(end-100:end,5));
app.k_q=(y2-y1)/(x2-x1);
st1=num2str(Pkb(1));
st=['K_T is ',st1];
st2=num2str(app.k_q);
stt=['K_Q is ',st2];
app.textfork.Value = {st; stt};
end
% findpulse button pushed function
function findpulseButtonPushed(app)
app.c=pulse_finder(app.ff1,10);
[c1,~]=size(app.c);
app.pulsenum.Limits = [1 c1];
st1=num2str(c1);
app.pulsenumtext.Value={st1};
app.UIAxes1.cla;
hold(app.UIAxes1,'on');
plot(app.UIAxes1,app.ff1(:,1),app.ff1(:,5));
plot(app.UIAxes1,app.ff1(app.c(:,1),1),app.ff1(app.c(:,1),5),'or');
end
% pulsenum value changed function
function pulsenumValueChanged(app)
app.n_pul = round(app.pulsenum.Value);
st1=num2str(app.n_pul);
app.tem=num2str(app.ff1(app.c(app.n_pul,1),12));
st=['Unfiltered ',st1,'s pulse; T = ',app.tem,' mK'];
app.UIAxes2.cla;
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5));
title(app.UIAxes2,st);
xlabel(app.UIAxes2,'Time [sec]');
ylabel(app.UIAxes2,'Q');
end
% filt value changed function
function filtValueChanged(app, event)
val = app.filt.Value;
switch val
case 'Median'
%app.af=abs(medfilt1(app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5),app.pulse_one));
app.af=medfilt1(app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5),app.pulse_one);
app.af(1)=app.af(2);
app.UIAxes2.cla;
hold(app.UIAxes2,'on');
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5));
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.af,'-r','LineWidth',1);
title(app.UIAxes2,'Median');
xlabel(app.UIAxes2,'Time [sec]');
ylabel(app.UIAxes2,'Q');
app.tim=app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1);
case 'None'
st1=num2str(app.n_pul);
app.tem=num2str(app.ff1(app.c(app.n_pul,1),12));
st=['Unfiltered ',st1,'s pulse; T = ',app.tem,' mK'];
app.UIAxes2.cla;
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5));
title(app.UIAxes2,st);
xlabel(app.UIAxes2,'Time [sec]');
ylabel(app.UIAxes2,'Q');
app.tim=app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1);
case 'Moving'
b=(1/app.pulse_one)*ones(1,app.pulse_one);
a=1;
app.af=filter(b,a,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5));
app.af(1:app.pulse_one-1)=app.af(app.pulse_one);
app.UIAxes2.cla;
hold(app.UIAxes2,'on');
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),5));
plot(app.UIAxes2,app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1),app.af,'-r','LineWidth',1);
title(app.UIAxes2,'Moving');
xlabel(app.UIAxes2,'Time [sec]');
ylabel(app.UIAxes2,'Q');
app.tim=app.ff1(app.c(app.n_pul,1):app.c(app.n_pul,2),1);
end
end
% filt_n1 value changed function
function filt_n1ValueChanged(app)
app.pulse_one = round(app.filt_n1.Value);
end
% apply1 button pushed function
function apply1ButtonPushed(app)
app.filtValueChanged;
end
% incline button pushed function
function inclineButtonPushed(app)
for ii=1:length(app.af)
app.f_inc(ii,1)=app.ff1(app.c(app.n_pul,1)+ii-1,1);
%app.f_inc(ii,2)= app.af(ii)-app.k_q*app.f_inc(ii,1);
app.f_inc(ii,2)= app.af(ii);
end
app.cutBegin2.Limits = [1 length(app.f_inc)];
app.cutEnd2.Limits = [1 length(app.f_inc)];
app.cutEnd2.Value = length(app.f_inc);
app.UIAxes2.cla;
plot(app.UIAxes2,app.f_inc(:,1),app.f_inc(:,2),'-r','LineWidth',1);
title(app.UIAxes2,'After incline');
xlabel(app.UIAxes2,'Time [sec]');
ylabel(app.UIAxes2,'Q');
end
% cutBegin2 value changed function
function cutBegin2ValueChanged(app)
app.beg2 = round(app.cutBegin2.Value);
app.UIAxes2.cla;
plot(app.UIAxes2,app.f_inc(app.beg2:app.end2,1),app.f_inc(app.beg2:app.end2,2));
title(app.UIAxes2, 'Modifying');
xlabel(app.UIAxes2, 'Time [sec]');
ylabel(app.UIAxes2, 'Q');
end
% cutEnd2 value changed function
function cutEnd2ValueChanged(app)
app.end2 = round(app.cutEnd2.Value);
app.UIAxes2.cla;
plot(app.UIAxes2,app.f_inc(app.beg2:app.end2,1),app.f_inc(app.beg2:app.end2,2));
title(app.UIAxes2, 'Modifying');
xlabel(app.UIAxes2, 'Time [sec]');
ylabel(app.UIAxes2, 'Q');
end
% Closeapp button pushed function
function CloseappButtonPushed(app)
delete(app);
end
% apply_cut button pushed function
function apply_cutButtonPushed(app)
app.tim(app.end2:end,:)=[];
app.tim(1:app.beg2,:)=[];
app.af(app.end2:end,:)=[];
app.af(1:app.beg2,:)=[];
app.f_inc(app.end2:end,:)=[];
app.f_inc(1:app.beg2,:)=[];
app.f_inc(:,1)=app.f_inc(:,1)-app.f_inc(1,1);
%app.f_inc(:,2)=abs(app.f_inc(:,2));
app.f_inc(:,2)=app.f_inc(:,2);
m1=min(app.f_inc(:,2));
app.b_q=m1;
app.tim(:)=app.tim(:)-app.tim(1);
y2(:)=app.k_q.*app.tim(:)+mean(app.af(end-100:end));
y2(:)=abs(y2(:)-(y2(end)-app.af(end)));
app.UIAxes2.cla;
hold(app.UIAxes2,'on');
plot(app.UIAxes2,app.f_inc(:,1),app.f_inc(:,2));
plot(app.UIAxes2,app.tim,app.af);
plot(app.UIAxes2,app.tim,y2);
title(app.UIAxes2, 'Modified');
xlabel(app.UIAxes2, 'Time [sec]');
ylabel(app.UIAxes2, 'Q');
end
% fitfuns value changed function
function fitfunsValueChanged(app, event)
val = app.fitfuns.Value;
switch val
case 'Fit1'
% fit
m1=min(app.f_inc(:,2));
%m1=0;
app.f_inc(:,2)=app.f_inc(:,2)-m1;
x0=[1 0 1000 0.1];
options = optimoptions(@fminunc,'MaxFunEvals',5000);
lb = [-400 -100 0 0];
ub = [400 100 400000 400];
[app.fit1,resnorm,residuals] = lsqcurvefit(@expfitfunUI,x0,app.f_inc(:,1)',app.f_inc(:,2)',lb,ub,options);
% text fittning parametrs
s1=num2str(app.fit1(1));
s2=num2str(app.fit1(2));
s3=num2str(app.fit1(3));
s4=num2str(app.fit1(4));
s5=num2str(app.tem);
s6=num2str(resnorm);
ss1=['A = ',s1];
ss2=['t_0 = ',s2];
ss3=['tau = ',s3];
ss4=['b = ',s4];
ss5=['Temperature = ',s5];
ss6=['Res Norm = ',s6];
app.printfit.Value = {ss1;ss2;ss3;ss4;ss5;ss6};
y=expfitfunUI(app.fit1,app.f_inc(:,1)');
app.UIAxes3.cla;
hold(app.UIAxes3,'on');
plot(app.UIAxes3,app.f_inc(:,1),app.f_inc(:,2));
plot(app.UIAxes3,app.f_inc(:,1),y);
title(app.UIAxes3, 'Fit1');
xlabel(app.UIAxes3, 'Time [sec]');
ylabel(app.UIAxes3, 'Q');
app.UIAxes4.cla;
hold(app.UIAxes4,'on');
plot(app.UIAxes4,app.f_inc(:,1),log(app.f_inc(:,2)));
plot(app.UIAxes4,app.f_inc(:,1),log(y));
title(app.UIAxes4, ' Log of Fit1');
xlabel(app.UIAxes4, 'Time [sec]');
ylabel(app.UIAxes4, 'ln(Q)');
app.UIAxes5.cla;
plot(app.UIAxes5,1:length(residuals),residuals);
[a,bc,rod,h,p]=errans(y,app.f_inc(:,2)',0,residuals,app.nbin.Value);
%hold(app.UIAxes6,'on');
plot(app.UIAxes6,bc,rod,'-xk');
pd = fitdist(residuals','Normal');
fgaus = fit(bc,rod,'gauss1');
y_gaus(:)=fgaus.a1.*exp(-((bc(:)-fgaus.b1)/fgaus.c1).^2);
plot(app.UIAxes6,bc,y_gaus,'--k');
sa6=num2str(fgaus.a1);
sa7=num2str(fgaus.b1);
sa8=num2str(fgaus.c1);
saa6=['A_gaus = ',sa6];
saa7=['mu_gaus = ',sa7];
saa8=['signma_gaus = ',sa8];
sa1=num2str(a);
sa2=num2str(h);
sa3=num2str(p);
sa4=num2str(pd.mu);
sa5=num2str(pd.sigma);
saa1=['chi2 = ',sa1];
saa2=['h = ',sa2];
saa3=['p = ',sa3];
saa4=['mu = ',sa4];
saa5=['sigma = ',sa5];
app.errtext.Value = {ss6;saa1;saa2;saa3;saa4;saa5;saa6;saa7;saa8};
[yfit,xfit,nb,ne]=remodel(y,m1,app.tim,app.sfluid.Value,app.beg2,app.ff,app.poly_off,app.c(app.n_pul,1),app.c(app.n_pul,2),app.beg1);
app.UIAxes7.cla;
hold(app.UIAxes7,'on');
plot(app.UIAxes7,app.ff(nb:ne,1),app.ff(nb:ne,5),'-b');
plot(app.UIAxes7,xfit,yfit,'r');
case 'None'
ly(:)=log(app.f_inc(:,2));
app.UIAxes3.cla;
plot(app.UIAxes3,app.f_inc(:,1),app.f_inc(:,2));
title(app.UIAxes3, 'None');
xlabel(app.UIAxes3, 'Time [sec]');
ylabel(app.UIAxes3, 'Q');
% log
app.UIAxes4.cla;
plot(app.UIAxes4,app.f_inc(:,1),ly(:));
title(app.UIAxes4, 'Log');
xlabel(app.UIAxes4, 'Time [sec]');
ylabel(app.UIAxes4, 'ln(Q)');
case 'Fit2'
m1=min(app.f_inc(:,2));
%m1=0;
app.f_inc(:,2)=app.f_inc(:,2)-m1;
x0=[app.b_q app.k_q app.fit1(3) 0];
if app.polydegree.Value == 1
lb = [-10 -app.k_f2.Value 0 -40000];
ub = [10 app.k_f2.Value 400000 40000];
else
lb = [-10 -app.k_f2.Value 0 -40000];
ub = [10 app.k_f2.Value 400000 40000];
end
options = optimoptions(@fminunc,'MaxFunEvals',5000);
% lb = [-4000 0 0 -40000]; % ub = [4000 1 400000 40000]; [app.fit2,resnorm,residuals] = lsqcurvefit(@exp2fitfunUI,x0,app.tim',app.af',lb,ub,options); y1(:)=app.af(:)-app.fit2(2).*app.tim(:)-app.fit2(1); % substract y2(:)=app.fit2(2).*app.tim(:)+app.fit2(1); s1=num2str(app.fit2(1)); s2=num2str(app.fit2(2)); s3=num2str(app.fit2(3)); s4=num2str(app.fit2(4)); s5=num2str(app.tem); s6=num2str(resnorm); ss1=['A = ',s1]; ss2=['B = ',s2]; ss3=['tau = ',s3]; ss4=['t0 = ',s4]; ss5=['Temperature = ',s5]; ss6=['Res Norm = ',s6]; app.printfit.Value = {ss1;ss2;ss3;ss4;ss5;ss6}; y=exp2fitfunUI(app.fit2,app.tim'); app.UIAxes3.cla; hold(app.UIAxes3,'on'); plot(app.UIAxes3,app.tim,app.af); plot(app.UIAxes3,app.tim,y); plot(app.UIAxes3,app.tim,y2); title(app.UIAxes3, 'Fit2'); xlabel(app.UIAxes3, 'Time [sec]'); ylabel(app.UIAxes3, 'Q');
app.UIAxes4.cla;
hold(app.UIAxes4,'on');
plot(app.UIAxes4,app.f_inc(:,1),app.f_inc(:,2));
plot(app.UIAxes4,app.tim,y1);
title(app.UIAxes4, ' Log of Fit1');
xlabel(app.UIAxes4, 'Time [sec]');
ylabel(app.UIAxes4, 'Q');
app.UIAxes5.cla;
plot(app.UIAxes5,1:length(residuals),residuals);
[a,bc,rod,h,p]=errans(y,app.af',5,residuals,app.nbin.Value);
%hold(app.UIAxes6,'on');
plot(app.UIAxes6,bc,rod,'-xr');
pd = fitdist(residuals','Normal');
fgaus = fit(bc,rod,'gauss1');
y_gaus(:)=fgaus.a1.*exp(-((bc(:)-fgaus.b1)/fgaus.c1).^2);
plot(app.UIAxes6,bc,y_gaus,'--r');
sa6=num2str(fgaus.a1);
sa7=num2str(fgaus.b1);
sa8=num2str(fgaus.c1);
saa6=['A_gaus = ',sa6];
saa7=['mu_gaus = ',sa7];
saa8=['signma_gaus = ',sa8];
sa1=num2str(a);
sa2=num2str(h);
sa3=num2str(p);
sa4=num2str(pd.mu);
sa5=num2str(pd.sigma);
saa1=['chi2 = ',sa1];
saa2=['h = ',sa2];
saa3=['p = ',sa3];
saa4=['mu = ',sa4];
saa5=['sigma = ',sa5];
app.errtext.Value = {ss6;saa1;saa2;saa3;saa4;saa5;saa6;saa7;saa8};
[yfit,xfit,nb,ne]=remodel(y,m1,app.tim,app.sfluid.Value,app.beg2,app.ff,app.poly_off,app.c(app.n_pul,1),app.c(app.n_pul,2),app.beg1);
app.UIAxes7.cla;
hold(app.UIAxes7,'on');
plot(app.UIAxes7,app.ff(nb:ne,1),app.ff(nb:ne,5),'-b');
plot(app.UIAxes7,xfit,yfit,'r');
case 'Fit3'
m1=min(app.f_inc(:,2));
app.f_inc(:,2)=app.f_inc(:,2)-m1;
x0=[app.fit2(1) app.fit2(2) app.fit2(3) app.fit2(4) 0];
options = optimoptions(@fminunc,'MaxFunEvals',5000);
lb=[0 -1000 0 -40000 0];
ub=[40000 1000 40000 40000 1000];
[app.fit3,resnorm,residuals] = lsqcurvefit(@exp3fitfunUI,x0,app.tim',app.af',lb,ub,options);
y1(:)=app.af(:)-app.fit3(2).*app.tim(:)-app.fit3(1); % substract
y2(:)=app.fit3(2).*app.tim(:)+app.fit3(1);
taue=app.fit3(3)+app.fit3(5)*app.tim(end);
s1=num2str(app.fit3(1));
s2=num2str(app.fit3(2));
s3=num2str(app.fit3(3));
s4=num2str(app.fit3(4));
s5=num2str(app.tem);
s6=num2str(resnorm);
s7=num2str(app.fit3(5));
s8=num2str(taue);
ss1=['A = ',s1];
ss2=['B = ',s2];
ss3=['tau = ',s3];
ss4=['t0 = ',s4];
ss7=['C = ',s7];
ss8=['tau_e = ',s8];
ss5=['Temperature = ',s5];
ss6=['Res Norm = ',s6];
app.printfit.Value = {ss1;ss2;ss3;ss4;ss7;ss8;ss5;ss6};
y=exp3fitfunUI(app.fit3,app.tim');
app.UIAxes3.cla;
hold(app.UIAxes3,'on');
plot(app.UIAxes3,app.tim,app.af);
plot(app.UIAxes3,app.tim,y);
plot(app.UIAxes3,app.tim,y2);
title(app.UIAxes3, 'Fit3');
xlabel(app.UIAxes3, 'Time [sec]');
ylabel(app.UIAxes3, 'Q');
app.UIAxes4.cla;
hold(app.UIAxes4,'on');
plot(app.UIAxes4,app.f_inc(:,1),app.f_inc(:,2));
plot(app.UIAxes4,app.tim,y1);
title(app.UIAxes4, ' Log of Fit1');
xlabel(app.UIAxes4, 'Time [sec]');
ylabel(app.UIAxes4, 'Q');
app.UIAxes5.cla;
plot(app.UIAxes5,1:length(residuals),residuals);
[a,bc,rod,h,p]=errans(y,app.af',5,residuals,app.nbin.Value);
%hold(app.UIAxes6,'on');
plot(app.UIAxes6,bc,rod,'-xg','LineWidth',1);
pd = fitdist(residuals','Normal');
fgaus = fit(bc,rod,'gauss1');
y_gaus(:)=fgaus.a1.*exp(-((bc(:)-fgaus.b1)/fgaus.c1).^2);
plot(app.UIAxes6,bc,y_gaus,'--g');
sa6=num2str(fgaus.a1);
sa7=num2str(fgaus.b1);
sa8=num2str(fgaus.c1);
saa6=['A_gaus = ',sa6];
saa7=['mu_gaus = ',sa7];
saa8=['signma_gaus = ',sa8];
sa1=num2str(a);
sa2=num2str(h);
sa3=num2str(p);
sa4=num2str(pd.mu);
sa5=num2str(pd.sigma);
saa1=['chi2 = ',sa1];
saa2=['h = ',sa2];
saa3=['p = ',sa3];
saa4=['mu = ',sa4];
saa5=['sigma = ',sa5];
app.errtext.Value = {ss6;saa1;saa2;saa3;saa4;saa5;saa6;saa7;saa8};
[yfit,xfit,nb,ne]=remodel(y,m1,app.tim,app.sfluid.Value,app.beg2,app.ff,app.poly_off,app.c(app.n_pul,1),app.c(app.n_pul,2),app.beg1);
app.UIAxes7.cla;
hold(app.UIAxes7,'on');
plot(app.UIAxes7,app.ff(nb:ne,1),app.ff(nb:ne,5),'-b');
plot(app.UIAxes7,xfit,yfit,'r');
case 'Fit4'
m1=min(app.f_inc(:,2));
app.f_inc(:,2)=app.f_inc(:,2)-m1;
x0=[app.fit2(1) app.fit2(2) app.fit2(3) app.fit2(4) 0];
options = optimoptions(@fminunc,'MaxFunEvals',5000);
lb = [0 0 0 -40000 0];
ub = [4000 1 400000 40000 1000];
[app.fit4,resnorm,residuals] = lsqcurvefit(@exp4fitfunUI,x0,app.tim',app.af',lb,ub,options);
y1(:)=app.af(:)-app.fit4(2).*app.tim(:)-app.fit4(1); % substract
y2(:)=app.fit4(2).*app.tim(:)+app.fit4(1);
%taue=app.fit4(3)+app.fit4(5)*app.tim(end);
s1=num2str(app.fit4(1));
s2=num2str(app.fit4(2));
s3=num2str(app.fit4(3));
s4=num2str(app.fit4(4));
s5=num2str(app.tem);
s6=num2str(resnorm);
s7=num2str(app.fit4(5));
%s8=num2str(taue);
ss1=['A = ',s1];
ss2=['B = ',s2];
ss3=['tau = ',s3];
ss4=['t0 = ',s4];
ss7=['C = ',s7];
%ss8=['tau_e = ',s8];
ss5=['Temperature = ',s5];
ss6=['Res Norm = ',s6];
app.printfit.Value = {ss1;ss2;ss3;ss4;ss7;ss5;ss6};
y=exp4fitfunUI(app.fit4,app.tim');
app.UIAxes3.cla;
hold(app.UIAxes3,'on');
plot(app.UIAxes3,app.tim,app.af);
plot(app.UIAxes3,app.tim,y);
plot(app.UIAxes3,app.tim,y2);
title(app.UIAxes3, 'Fit4');
xlabel(app.UIAxes3, 'Time [sec]');
ylabel(app.UIAxes3, 'Q');
app.UIAxes4.cla;
hold(app.UIAxes4,'on');
plot(app.UIAxes4,app.f_inc(:,1),app.f_inc(:,2));
plot(app.UIAxes4,app.tim,y1);
title(app.UIAxes4, ' Log of Fit1');
xlabel(app.UIAxes4, 'Time [sec]');
ylabel(app.UIAxes4, 'Q');
app.UIAxes5.cla;
plot(app.UIAxes5,1:length(residuals),residuals);
end
end
% qends button pushed function
function qendsButtonPushed(app)
[c1,~]=size(app.c);
y=zeros(c1,2);
num_off=90;
for ii=1:c1
y(ii,1)=mean(app.ff1(app.c(ii,2)-num_off-50:app.c(ii,2)-num_off,1));
y(ii,2)=mean(app.ff1(app.c(ii,2)-num_off-50:app.c(ii,2)-num_off,5));
end
app.poly_off=polyfit(y(:,1),y(:,2),app.polydegree.Value);
%y1 = polyval(app.poly_off,y(:,1));
y1 = polyval(app.poly_off,app.ff1(:,1));
s1=num2str(app.poly_off(1));
app.k_q=app.poly_off(1);
st=['K_q = ',s1];
app.textfork.Value = {st};
app.UIAxes1.cla;
hold(app.UIAxes1,'on');
plot(app.UIAxes1,y(:,1),y(:,2),'-o');
plot(app.UIAxes1,app.ff1(:,1),y1,'-');
title(app.UIAxes1, ' Time dependence of Q at the end of the pulses');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Q');
% ylim(app.UIAxes1,[-1 10]);
end
% clear_err button pushed function
function clear_errButtonPushed(app)
app.UIAxes6.cla;
end
% applypoly button pushed function
function applypolyButtonPushed(app)
y1 = polyval(app.poly_off,app.ff1(:,1));
if app.sfluid.Value == 0
app.ff1(:,5)=app.ff1(:,5)-y1(:);
else
app.ff1(:,5)=y1(:)-app.ff1(:,5);
end
plot(app.UIAxes1,app.ff1(:,1),app.ff1(:,5),'--');
ylim(app.UIAxes1,[-1 3]);
if app.polydegree.Value ~= 1
app.k_q=0;
app.b_q=0;
else
app.k_q=y1(1);
app.b_q=y1(2);
end
end
% OpenFile button pushed function
function OpenFileButtonPushed(app)
runStartupFcn(app, @startupFcn);
end
% tempSF button pushed function
function tempSFButtonPushed(app)
yf=testL(app.ff1);
app.UIAxes1.cla;
hold(app.UIAxes1,'on');
plot(app.UIAxes1,app.ff1(:,1),app.ff1(:,12),'.b');
plot(app.UIAxes1,app.ff1(:,1),yf,'-r');
title(app.UIAxes1, 'New temperature');
xlabel(app.UIAxes1, 'Time [sec]');
ylabel(app.UIAxes1, 'Temperature [mK]');
ylim(app.UIAxes1,'auto');
app.ff1(:,12)=yf(:);
end
% exportF button pushed function
function exportFButtonPushed(app)
y=exp2fitfunUI(app.fit2,app.tim');
% plot(app.UIAxes3,app.tim,app.af);
% plot(app.UIAxes3,app.tim,y);
fileID = fopen('fitAndSub.dat','w');
for ii=1:length(y)
fprintf(fileID,'%f \t %f \t %f \n',app.tim(ii),app.af(ii),y(ii));
end
fclose(fileID);
end
end
% App initialization and construction
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure
app.UIFigure = uifigure;
app.UIFigure.Position = [100 100 640 482];
app.UIFigure.Name = 'UI Figure';
setAutoResize(app, app.UIFigure, true)
% Create TabGroup
app.TabGroup = uitabgroup(app.UIFigure);
app.TabGroup.Units = 'pixels';
app.TabGroup.Position = [0 -1 640 483];
% Create prep
app.prep = uitab(app.TabGroup);
app.prep.Units = 'pixels';
app.prep.Title = 'Preparing';
% Create UIAxes1
app.UIAxes1 = uiaxes(app.prep);
title(app.UIAxes1, 'Title');
xlabel(app.UIAxes1, 'X');
ylabel(app.UIAxes1, 'Y');
app.UIAxes1.Box = 'on';
app.UIAxes1.XGrid = 'on';
app.UIAxes1.YGrid = 'on';
app.UIAxes1.Position = [277 155 347 292];
% Create init
app.init = uipanel(app.prep);
app.init.BorderType = 'line';
app.init.TitlePosition = 'centertop';
app.init.Title = 'Initial data manipulation';
app.init.FontName = 'Helvetica';
app.init.FontUnits = 'pixels';
app.init.FontSize = 16;
app.init.Units = 'pixels';
app.init.Position = [0 30 260 431];
% Create LabelSlider
app.LabelSlider = uilabel(app.init);
app.LabelSlider.HorizontalAlignment = 'right';
app.LabelSlider.FontSize = 14;
app.LabelSlider.Position = [98 372 36 18];
app.LabelSlider.Text = 'Begin';
% Create cutBegin
app.cutBegin = uislider(app.init);
app.cutBegin.Limits = [1 100];
app.cutBegin.ValueChangedFcn = createCallbackFcn(app, @cutBeginValueChanged);
app.cutBegin.Position = [37 362 150 3];
app.cutBegin.Value = 1;
% Create Label
app.Label = uilabel(app.init);
app.Label.HorizontalAlignment = 'right';
app.Label.FontSize = 14;
app.Label.Position = [109 295 25 18];
app.Label.Text = 'End';
% Create cutEnd
app.cutEnd = uislider(app.init);
app.cutEnd.ValueChangedFcn = createCallbackFcn(app, @cutEndValueChanged);
app.cutEnd.Position = [37 285 150 3];
% Create setP
app.setP = uibutton(app.init, 'push');
app.setP.ButtonPushedFcn = createCallbackFcn(app, @setPButtonPushed);
app.setP.Position = [31 212 100 22];
app.setP.Text = 'Set';
% Create findk
app.findk = uibutton(app.init, 'push');
app.findk.ButtonPushedFcn = createCallbackFcn(app, @findkButtonPushed);
app.findk.Position = [31 157 100 22];
app.findk.Text = 'Find K''s';
% Create findpulse
app.findpulse = uibutton(app.init, 'push');
app.findpulse.ButtonPushedFcn = createCallbackFcn(app, @findpulseButtonPushed);
app.findpulse.Position = [31 108 100 22];
app.findpulse.Text = 'Find pulses';
% Create qvstime
app.qvstime = uibutton(app.init, 'push');
app.qvstime.ButtonPushedFcn = createCallbackFcn(app, @qvstimeButtonPushed);
app.qvstime.Position = [148 212 100 22];
app.qvstime.Text = 'SeeQ';
% Create pulsenumtext
app.pulsenumtext = uitextarea(app.init);
app.pulsenumtext.FontSize = 14;
app.pulsenumtext.Position = [148 109 100 26];
% Create qends
app.qends = uibutton(app.init, 'push');
app.qends.ButtonPushedFcn = createCallbackFcn(app, @qendsButtonPushed);
app.qends.Position = [22 56 100 22];
app.qends.Text = 'Qends';
% Create LabelNumericEditField4
app.LabelNumericEditField4 = uilabel(app.init);
app.LabelNumericEditField4.HorizontalAlignment = 'right';
app.LabelNumericEditField4.Position = [158 83 66 15];
app.LabelNumericEditField4.Text = 'Poly degree';
% Create polydegree
app.polydegree = uieditfield(app.init, 'numeric');
app.polydegree.Limits = [1 10];
app.polydegree.Position = [148 56 100 22];
app.polydegree.Value = 1;
% Create applypoly
app.applypoly = uibutton(app.init, 'push');
app.applypoly.ButtonPushedFcn = createCallbackFcn(app, @applypolyButtonPushed);
app.applypoly.Position = [22 15 100 22];
app.applypoly.Text = 'Apply poly';
% Create OpenFile
app.OpenFile = uibutton(app.init, 'push');
app.OpenFile.ButtonPushedFcn = createCallbackFcn(app, @OpenFileButtonPushed);
app.OpenFile.Position = [148 15 100 22];
app.OpenFile.Text = 'open file';
% Create LabelNumericEditField6
app.LabelNumericEditField6 = uilabel(app.init);
app.LabelNumericEditField6.HorizontalAlignment = 'right';
app.LabelNumericEditField6.Position = [158 178 66 15];
app.LabelNumericEditField6.Text = 'SFluid true?';
% Create sfluid
app.sfluid = uieditfield(app.init, 'numeric');
app.sfluid.Limits = [0 1];
app.sfluid.ValueDisplayFormat = '%.0f';
app.sfluid.Position = [157 156 100 22];
% Create LabelTextArea
app.LabelTextArea = uilabel(app.prep);
app.LabelTextArea.HorizontalAlignment = 'right';
app.LabelTextArea.FontSize = 14;
app.LabelTextArea.Position = [403 128 54 18];
app.LabelTextArea.Text = 'K values';
% Create textfork
app.textfork = uitextarea(app.prep);
app.textfork.FontSize = 14;
app.textfork.Position = [398 81 134 43];
app.textfork.Value = {'K_T = 0'; 'K_Q = 0'};
% Create LabelEditField
app.LabelEditField = uilabel(app.prep);
app.LabelEditField.HorizontalAlignment = 'right';
app.LabelEditField.Position = [426 50 62 15];
app.LabelEditField.Text = 'Folder path';
% Create path
app.path = uieditfield(app.prep, 'text');
app.path.Position = [412 22 192 20];
app.path.Value = 'D:\therm_transport\';
% Create tempSF
app.tempSF = uibutton(app.prep, 'push');
app.tempSF.ButtonPushedFcn = createCallbackFcn(app, @tempSFButtonPushed);
app.tempSF.Position = [264.5 102 109 22];
app.tempSF.Text = 'Temperature at SO';
% Create Tab2
app.Tab2 = uitab(app.TabGroup);
app.Tab2.Units = 'pixels';
app.Tab2.Title = 'Filtering';
% Create UIAxes2
app.UIAxes2 = uiaxes(app.Tab2);
title(app.UIAxes2, 'Title');
xlabel(app.UIAxes2, 'X');
ylabel(app.UIAxes2, 'Y');
app.UIAxes2.Box = 'on';
app.UIAxes2.Position = [199 119 440 342];
% Create Panel
app.Panel = uipanel(app.Tab2);
app.Panel.BorderType = 'line';
app.Panel.TitlePosition = 'centertop';
app.Panel.Title = 'Pulse selection';
app.Panel.FontName = 'Helvetica';
app.Panel.FontUnits = 'pixels';
app.Panel.FontSize = 12;
app.Panel.Units = 'pixels';
app.Panel.Position = [0 73 200 388];
% Create LabelNumericEditField
app.LabelNumericEditField = uilabel(app.Panel);
app.LabelNumericEditField.HorizontalAlignment = 'center';
app.LabelNumericEditField.VerticalAlignment = 'center';
app.LabelNumericEditField.Position = [3 318 76 15];
app.LabelNumericEditField.Text = 'Pulse number';
% Create pulsenum
app.pulsenum = uieditfield(app.Panel, 'numeric');
app.pulsenum.ValueChangedFcn = createCallbackFcn(app, @pulsenumValueChanged);
app.pulsenum.Limits = [0 Inf];
app.pulsenum.ValueDisplayFormat = '%.0f';
app.pulsenum.Position = [87 314 100 22];
% Create LabelDropDown
app.LabelDropDown = uilabel(app.Panel);
app.LabelDropDown.HorizontalAlignment = 'right';
app.LabelDropDown.Position = [39 284 33 15];
app.LabelDropDown.Text = 'Filters';
% Create filt
app.filt = uidropdown(app.Panel);
app.filt.Items = {'Median', 'Moving', 'None'};
app.filt.ValueChangedFcn = createCallbackFcn(app, @filtValueChanged, true);
app.filt.Position = [87 280 100 22];
app.filt.Value = 'Median';
% Create LabelNumericEditField2
app.LabelNumericEditField2 = uilabel(app.Panel);
app.LabelNumericEditField2.HorizontalAlignment = 'right';
app.LabelNumericEditField2.Position = [13 248 57 15];
app.LabelNumericEditField2.Text = '1st field filt';
% Create filt_n1
app.filt_n1 = uieditfield(app.Panel, 'numeric');
app.filt_n1.ValueChangedFcn = createCallbackFcn(app, @filt_n1ValueChanged);
app.filt_n1.Limits = [0 Inf];
app.filt_n1.Position = [85 244 100 22];
app.filt_n1.Value = 1;
% Create apply1
app.apply1 = uibutton(app.Panel, 'push');
app.apply1.ButtonPushedFcn = createCallbackFcn(app, @apply1ButtonPushed);
app.apply1.Position = [99 205 86 22];
app.apply1.Text = 'Apply filter';
% Create incline
app.incline = uibutton(app.Panel, 'push');
app.incline.ButtonPushedFcn = createCallbackFcn(app, @inclineButtonPushed);
app.incline.Position = [3 205 81 22];
app.incline.Text = 'Incline';
% Create LabelSlider2
app.LabelSlider2 = uilabel(app.Panel);
app.LabelSlider2.HorizontalAlignment = 'right';
app.LabelSlider2.Position = [77 175 32 15];
app.LabelSlider2.Text = 'Begin';
% Create cutBegin2
app.cutBegin2 = uislider(app.Panel);
app.cutBegin2.Limits = [1 100];
app.cutBegin2.ValueChangedFcn = createCallbackFcn(app, @cutBegin2ValueChanged);
app.cutBegin2.Position = [18 167 150 3];
app.cutBegin2.Value = 1;
% Create Label2
app.Label2 = uilabel(app.Panel);
app.Label2.HorizontalAlignment = 'right';
app.Label2.Position = [87 105 22 15];
app.Label2.Text = 'End';
% Create cutEnd2
app.cutEnd2 = uislider(app.Panel);
app.cutEnd2.Limits = [1 100];
app.cutEnd2.ValueChangedFcn = createCallbackFcn(app, @cutEnd2ValueChanged);
app.cutEnd2.Position = [18 97 150 3];
app.cutEnd2.Value = 1;
% Create apply_cut
app.apply_cut = uibutton(app.Panel, 'push');
app.apply_cut.ButtonPushedFcn = createCallbackFcn(app, @apply_cutButtonPushed);
app.apply_cut.Position = [85 24 100 22];
app.apply_cut.Text = 'Apply cut';
% Create Tab3
app.Tab3 = uitab(app.TabGroup);
app.Tab3.Units = 'pixels';
app.Tab3.Title = 'Fitting';
% Create UIAxes3
app.UIAxes3 = uiaxes(app.Tab3);
title(app.UIAxes3, 'Title');
xlabel(app.UIAxes3, 'X');
ylabel(app.UIAxes3, 'Y');
app.UIAxes3.Box = 'on';
app.UIAxes3.XGrid = 'on';
app.UIAxes3.YGrid = 'on';
app.UIAxes3.Position = [252 230 386 231];
% Create Panel2
app.Panel2 = uipanel(app.Tab3);
app.Panel2.BorderType = 'line';
app.Panel2.TitlePosition = 'centertop';
app.Panel2.Title = 'Filter tools';
app.Panel2.FontName = 'Helvetica';
app.Panel2.FontUnits = 'pixels';
app.Panel2.FontSize = 12;
app.Panel2.Units = 'pixels';
app.Panel2.Position = [0 240 236 221];
% Create LabelDropDown2
app.LabelDropDown2 = uilabel(app.Panel2);
app.LabelDropDown2.HorizontalAlignment = 'right';
app.LabelDropDown2.Position = [78 170 70 15];
app.LabelDropDown2.Text = 'Fitting model';
% Create fitfuns
app.fitfuns = uidropdown(app.Panel2);
app.fitfuns.Items = {'Fit1', 'Fit2', 'Fit3', 'Fit4', 'None'};
app.fitfuns.ValueChangedFcn = createCallbackFcn(app, @fitfunsValueChanged, true);
app.fitfuns.Position = [67 135 100 22];
app.fitfuns.Value = 'Fit1';
% Create Label3
app.Label3 = uilabel(app.Panel2);
app.Label3.Position = [37 107 135 19];
app.Label3.Text = 'Fit 1: A*exp(-t+t0/tau) + B';
% Create Label4
app.Label4 = uilabel(app.Panel2);
app.Label4.Position = [37 87 150 15];
app.Label4.Text = 'Fit 2: A + b*t + exp(-t+t0/tau)';
% Create Label5
app.Label5 = uilabel(app.Panel2);
app.Label5.Position = [25 65 182 15];
app.Label5.Text = 'Fit 3: A + b*t + exp(-t+t0/(tau+C*t))';
% Create exportF
app.exportF = uibutton(app.Panel2, 'push');
app.exportF.ButtonPushedFcn = createCallbackFcn(app, @exportFButtonPushed);
app.exportF.Position = [63 22 100 22];
app.exportF.Text = 'Export graphs';
% Create UIAxes4
app.UIAxes4 = uiaxes(app.Tab3);
title(app.UIAxes4, 'Title');
xlabel(app.UIAxes4, 'X');
ylabel(app.UIAxes4, 'Y');
app.UIAxes4.Box = 'on';
app.UIAxes4.XGrid = 'on';
app.UIAxes4.YGrid = 'on';
app.UIAxes4.Position = [252 6 386 225];
% Create Panel3
app.Panel3 = uipanel(app.Tab3);
app.Panel3.BorderType = 'line';
app.Panel3.TitlePosition = 'centertop';
app.Panel3.Title = 'Fitting parameters';
app.Panel3.FontName = 'Helvetica';
app.Panel3.FontUnits = 'pixels';
app.Panel3.FontSize = 12;
app.Panel3.Units = 'pixels';
app.Panel3.Position = [0 10 236 221];
% Create printfit
app.printfit = uitextarea(app.Panel3);
app.printfit.Position = [42 70 150 119];
app.printfit.Value = {'1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'};
% Create Tab4
app.Tab4 = uitab(app.TabGroup);
app.Tab4.Units = 'pixels';
app.Tab4.Title = 'Residuals';
% Create UIAxes5
app.UIAxes5 = uiaxes(app.Tab4);
title(app.UIAxes5, 'Residuals');
xlabel(app.UIAxes5, 'Time');
ylabel(app.UIAxes5, 'Deviation');
app.UIAxes5.Box = 'on';
app.UIAxes5.XGrid = 'on';
app.UIAxes5.YGrid = 'on';
app.UIAxes5.Position = [190 236 449 225];
% Create UIAxes6
app.UIAxes6 = uiaxes(app.Tab4);
title(app.UIAxes6, 'Title');
xlabel(app.UIAxes6, 'X');
ylabel(app.UIAxes6, 'Y');
app.UIAxes6.Box = 'on';
app.UIAxes6.NextPlot = 'add';
app.UIAxes6.XGrid = 'on';
app.UIAxes6.YGrid = 'on';
app.UIAxes6.Position = [190 3 448 234];
% Create errtext
app.errtext = uitextarea(app.Tab4);
app.errtext.Position = [15 236 150 209];
app.errtext.Value = {'res_n'; 'chi'};
% Create LabelNumericEditField3
app.LabelNumericEditField3 = uilabel(app.Tab4);
app.LabelNumericEditField3.HorizontalAlignment = 'right';
app.LabelNumericEditField3.Position = [26 128 24 15];
app.LabelNumericEditField3.Text = 'Bins';
% Create nbin
app.nbin = uieditfield(app.Tab4, 'numeric');
app.nbin.Limits = [1 Inf];
app.nbin.Position = [65 124 100 22];
app.nbin.Value = 21;
% Create clear_err
app.clear_err = uibutton(app.Tab4, 'push');
app.clear_err.ButtonPushedFcn = createCallbackFcn(app, @clear_errButtonPushed);
app.clear_err.Position = [57 78 100 22];
app.clear_err.Text = 'Clear';
% Create Closeapp
app.Closeapp = uibutton(app.Tab4, 'push');
app.Closeapp.ButtonPushedFcn = createCallbackFcn(app, @CloseappButtonPushed);
app.Closeapp.Position = [57 24 100 22];
app.Closeapp.Text = 'Close';
% Create LabelNumericEditField5
app.LabelNumericEditField5 = uilabel(app.Tab4);
app.LabelNumericEditField5.HorizontalAlignment = 'right';
app.LabelNumericEditField5.Position = [74 195 52 15];
app.LabelNumericEditField5.Text = 'Edit Field';
% Create k_f2
app.k_f2 = uieditfield(app.Tab4, 'numeric');
app.k_f2.Position = [57 160 100 22];
app.k_f2.Value = 0.0002;
% Create Tab5
app.Tab5 = uitab(app.TabGroup);
app.Tab5.Units = 'pixels';
app.Tab5.Title = 'Re-model';
% Create UIAxes7
app.UIAxes7 = uiaxes(app.Tab5);
title(app.UIAxes7, 'Re-model');
xlabel(app.UIAxes7, 'Original time');
ylabel(app.UIAxes7, 'Original Q');
app.UIAxes7.Box = 'on';
app.UIAxes7.XGrid = 'on';
app.UIAxes7.YGrid = 'on';
app.UIAxes7.Position = [0 2 639 459];
end
end
methods (Access = public)
% Construct app
function app = analysisAD()
% Create and configure components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
% Execute the startup function
runStartupFcn(app, @startupFcn)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end