Skip to content

GUI using app designer in matlab for relaxation analysis

Notifications You must be signed in to change notification settings

dlotnyk/gui_taus_matlab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

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

About

GUI using app designer in matlab for relaxation analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published