function varargout=matrixstat_gui(varargin);
% Функция графического интерфейса для прогнозирования с помощью
% синус-трендов.

global INDATA_Y;
if (length(varargin)>0)
    INDATA_Y=varargin{1};
end

hfig=figure;
set(hfig,'Name','Параметры окна');

uicontrol('Style','text','Units','normalized','Position',[0.1 0.6 0.2 0.05],'String','Точка начала кризиса:');
ui_infilename=uicontrol('Style','edit','Units','normalized','Position',[0.4 0.6 0.48 0.05],'String','1','Tag','infile');

uicontrol('Style','text','Units','normalized','Position',[0.1 0.4 0.2 0.05],'String','Шаг окна');
ui_infilename=uicontrol('Style','edit','Units','normalized','Position',[0.4 0.4 0.48 0.05],'String','1','Tag','infile');

ui_ok=uicontrol('Style','pushbutton','Units','normalized','Position',[0.8 0.05 0.2 0.05],'String','Ok','Callback',@sintrendOkGUI);


function sintrendOkGUI(hObject, eventdata, handles);
par=get(hObject,'Parent');
childs=get(par,'Children');
tbeg=str2double(get(childs(length(childs)-1),'String'));
global npredict;
windowstep=str2double(get(childs(length(childs)-3),'String'));
global INDATA_Y;
%INDATA_Y=INDATA_Y/INDATA_Y(12000);% находим отклонения от начальной точки.
%figure;
%plot(INDATA_Y);
%title('Data: Y(t)/Y(0)');
[n,m]=size(INDATA_Y);
if (n<m)
    INDATA_Y=transpose(INDATA_Y);
    [n,m]=size(INDATA_Y);
end

if (tbeg>n)
    tbeg=1;
end

for i=1:m %нормировка рядов по точке начала кризиса
    normvalue=INDATA_Y(tbeg,i);
    INDATA_Y(:,i)=INDATA_Y(:,i)/normvalue;
end
masstat=[];
mas_min=[];
mas_max=[];
mas_amplitude=[];
mas_middleArith=[];
mas_middleSquare=[];
mas_middleAbsDev=[];
mas_middleSqDev=[];
mas_moment1=[];
mas_moment2=[];
mas_moment3=[];
mas_moment4=[];
mas_relAmplitude=[];
mas_relDev=[];
mas_relKoeffVar=[];
mas_koeffAsym=[];
mas_curtosis=[];

for i=1:n
    ypart=INDATA_Y(i,:);
    stat=getStat(ypart);
    masstat=[masstat,stat];
    mas_min=[mas_min,stat.min];
    mas_max=[mas_max,stat.max];
    mas_amplitude=[mas_amplitude,stat.amplitude];
    mas_middleArith=[mas_middleArith,stat.middleArith];
    mas_middleSquare=[mas_middleSquare,stat.middleSquare];
    mas_middleAbsDev=[mas_middleAbsDev,stat.middleAbsDev];
    mas_middleSqDev=[mas_middleSqDev,stat.middleSqDev];
    mas_moment1=[mas_moment1,stat.moment1];
    mas_moment2=[mas_moment2,stat.moment2];
    mas_moment3=[mas_moment3,stat.moment3];
    mas_moment4=[mas_moment4,stat.moment4];
    mas_relAmplitude=[mas_relAmplitude,stat.relAmplitude];
    mas_relDev=[mas_relDev,stat.relDev];
    mas_relKoeffVar=[mas_relKoeffVar,stat.relKoeffVar];
    mas_koeffAsym=[mas_koeffAsym,stat.koeffAsym];
    mas_curtosis=[mas_curtosis,stat.curtosis];
end

%     RES=transpose(RES);
    global HHANDLES;
    handles=HHANDLES;
    index=get(handles.listbox1,'Value');
 global SERIES
global SERIESINDEX
global SERIESTYPE
global SERIESSTAT
   
    SERIESINDEX=SERIESINDEX+1;
    RES=mas_min;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    CD=get(handles.listbox1,'String');
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Минимум ';
    
    SERIESINDEX=SERIESINDEX+1;
    RES=mas_max;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Максимум';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_amplitude;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Амплит. ';
    
    SERIESINDEX=SERIESINDEX+1;
    RES=mas_middleArith;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='СредАриф';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_middleSquare;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='СредКвад';
    
    SERIESINDEX=SERIESINDEX+1;
    RES=mas_middleAbsDev;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='ОтнРазм.';

        SERIESINDEX=SERIESINDEX+1;
    RES=mas_middleSqDev;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='ОтнКвОтк';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_moment1;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Момент 1';


    SERIESINDEX=SERIESINDEX+1;
    RES=mas_moment2;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Момент 2';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_moment3;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Момент 3';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_moment4;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Момент 4';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_relAmplitude;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='ОтнРазмх';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_relDev;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='ОтнОтклн';

    SERIESINDEX=SERIESINDEX+1;
    RES=mas_relKoeffVar;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='ОтнКоефВ';
    
    SERIESINDEX=SERIESINDEX+1;
    RES=mas_koeffAsym;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='КоефАсс ';

        SERIESINDEX=SERIESINDEX+1;
    RES=mas_curtosis;
    SERIES{SERIESINDEX}=RES;
    SERIESSTAT{SERIESINDEX}=getStat(RES);
    SERIESSTAT{SERIESINDEX}.fileName=SERIESSTAT{index}.fileName;
    SERIESTYPE{SERIESINDEX}=[char(SERIESTYPE{index}) ';ABS'];
    saveInfo(handles,SERIESSTAT{SERIESINDEX});
    [CDm,CDn]=size(CD);
    CD(CDm+1,:)='Ексцесс ';

    
    set(handles.listbox1,'String',CD);
    set(handles.listbox1,'Value',SERIESINDEX);


if get(handles.checkbox1,'Value')==get(handles.checkbox1,'Max')
    figure;
    plot(INDATA_Y);
    title('Data: Y(t)/Y(0)');
    
    figure;
plot(mas_min);
title('Минимальное значение');

figure;
plot(mas_max);
title('Mаксимальное значение');

figure;
plot(mas_amplitude);
title('Aмплитуда');

figure;
plot(mas_middleArith);
title('Среднее арифметическое');

figure;
plot(mas_middleSquare);
title('Среднее квадратическое');

figure;
plot(mas_middleAbsDev);
title('Среднее модуль отклонений');


figure;
plot(mas_middleSqDev);
title('Среднеквадратическое отклонение');

figure;
plot(mas_moment1);
title('1-й момент');

figure;
plot(mas_moment2);
title('2-й момент');

figure;
plot(mas_moment3);
title('3-й момент');

figure;
plot(mas_moment4);
title('4-й момент');


figure;
plot(mas_relAmplitude);
title('Относительный размах');

figure;
plot(mas_relDev);
title('Относительное отклонение');

figure;
plot(mas_relKoeffVar);
title('Относительный коэффициент вариации');

figure;
plot(mas_koeffAsym);
title('Коэффцицент ассиметрии');

figure;
plot(mas_curtosis);
title('Ексцесс');

end
    
    
    
    
